我正在尝试使用用户定义目录中的文件名填充两个数组。到目前为止,我的代码是有效的,如果文件在我运行程序的同一目录中。此代码的最终目标是使用脚本将文件从一种格式转换为另一种格式,并将新转换的文件导出到用户定义的目录中。
# Get export directory
my $export_dir = $ARGV[0]."\\";
print "Export Directory: \"$export_dir\"\n\n" if DEBUG;
# Get current working directory
my $cwd_dir = getcwd;
# Replace slashes with back-slashes for Windows compatibility
$cwd_dir =~ s/\//\\/g;
print "Current Working Directory: \"$cwd_dir\"\n\n" if DEBUG;
# Get list of ZIP files in directory
my @zip_files = glob "*.zip";
当zip文件位于当前工作目录中时,此代码有效。如何让zip文件位于用户定义的目录中? (在这种情况下是一个子文件夹,但应该是用户定义导出目录的地方)。
答案 0 :(得分:1)
只需将目录名称预先挂起到glob规范:
my @zip_files = glob "$export_dir\\*.zip";
P.S。理想情况下,您应该使用File::Spec
CPAN模块以独立于操作系统的方式构建文件路径,而不是为Windows编译"\\"
和为Unix编译"/"
。
答案 1 :(得分:0)
你显然想要
my @zip_files = do { eval { chdir $export_dir } or die $!; my @x = glob "*.zip"; chdir $cwd_dir; @x };
或者,如果$export_dir
不是一个有效的目录,那么过度杀戮会更少(返回空列表)
my @zip_files = eval { chdir $export_dir or die; my @x = glob "*.zip"; chdir $cwd_dir; @x };