我使用用户输入变量作为我的初始目录名,但在尝试展开目录并创建子文件夹时,利用该变量会导致路径出现问题。
#!/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;
答案 0 :(得分:4)
Perl中的未加引号/
表示除法或正则表达式匹配。引用它,如果它是字符串的一部分:
mkdir "$directory/data", 0755;
答案 1 :(得分:3)
或尝试
use File::Path qw/ make_path /;
make_path( "${directory}/data/image", "${directory}/data/cache" );
它将为您创建中间目录。
您可能还想查看Path::Tiny
或Path::Class
模块,这些模块具有更好的OO接口以进行文件操作。