【发布时间】:2011-09-03 15:47:43
【问题描述】:
我无法理解 Windows 中 perl 的命令参数引用。使用以下程序:
use strict;
use warnings;
use File::Find;
use File::Copy;
my $dir = shift;
die 'Usage: perl Folderize.pl <directory>' unless $dir;
die "$dir doesn't exist" unless -d $dir;
根据我对目录使用单引号还是双引号,我会得到不同的结果。如果我用'perl script.pl 'H:\Test!' 调用它,它会打印“'H:\Test!'不存在”。但是,如果我用'perl script.pl "H:\Test!" 调用它,它就可以正常工作。为什么会这样?
【问题讨论】:
-
如果你在 perl 代码中引用你对 $dir 的使用会发生什么?祝你好运。
-
-d "$dir"如果在命令行中使用了单引号,仍然会失败。在这种情况下,也可以不使用引号,但这只是因为路径没有空格。 -
你确定它说
H:\Test!不存在吗?而不是H:\Test? -
@Quentin 是的,惊叹号就在那里。这让你感到惊讶吗?
-
是的。引号应该只能在您的解释器中产生影响,因此如果它使用特殊字符执行某些操作,那么从 Perl 错误消息中应该可以看到差异。
标签: windows command-line quotes