2014-09-26 63 views
1

我正在使用用户输入变量作为我的初始目录名称,但在尝试展开目录并创建子文件夹时,利用该变量会在路径中引发问题。在perl中使用变量作为目录名称

#!/usr/bin/perl 
use strict; 
use warnings; 

print "What would you like to name your directory?\n"; 
chomp(my $directory = <STDIN>); 

mkdir $directory, 0755; 
mkdir $directory/data, 0755; ##<----<<Error begins here## 
mkdir $directory/data/image, 0755; 
mkdir $directory/data/cache, 0755; 
+4

'使用诊断;'并重试。 – 2014-09-26 13:36:48

+0

这帮助了非常,真棒。 – 1up 2014-09-26 13:39:21

+0

“严格使用;'和'使用警告;'的荣誉。 Tiz很高兴看到一位新用户已经学到了最重要的一课。 – Miller 2014-09-26 20:44:21

回答

4

Perl中未加引号/表示分割或正则表达式匹配。引用它,如果它是一个字符串的一部分:

mkdir "$directory/data", 0755; 
3

或者尝试

use File::Path qw/ make_path /; 

make_path("${directory}/data/image", "${directory}/data/cache"); 

它会创建中间目录为您服务。

您可能还想看看Path::TinyPath::Class模块,它们具有更好的文件操作OO接口。