Perl 为什么可以';你没看到这个目录吗?
我有以下目录结构:Perl 为什么可以';你没看到这个目录吗?,perl,Perl,我有以下目录结构: $ ls -F analyze/ data.pl input.pl logminer.txt logSearch.pl readFormat.pl Version Notes.txt datadump.pl format/ logminer.pl logs/ properties.txt unzip.exe 我运行: perl -e 'if (!(-d analyze)){ print "poo\n"}' 它会打印poo 这里少了什么?我之前做过类似的测试,它可以正确地识
$ ls -F
analyze/
data.pl
input.pl
logminer.txt
logSearch.pl
readFormat.pl
Version Notes.txt
datadump.pl
format/
logminer.pl
logs/
properties.txt
unzip.exe
我运行:
perl -e 'if (!(-d analyze)){ print "poo\n"}'
它会打印poo
这里少了什么?我之前做过类似的测试,它可以正确地识别目录是否存在。为什么不是这个目录
perl -e 'if (!(-d "analyze")){ print "poo\n"}'
^-- ^---
缺少引号
编辑:改为双引号-忘记了这是针对命令行perl的
缺少引号
编辑:改为双引号-忘记这是命令行perl的第一个引号
-d analyze
表示“检查文件句柄anaylyze
是否为目录句柄”。你想要
-d 'analyze'
现在,您说这样做仍然会遇到问题,所以请检查您遇到的错误
my $rv = -d 'analyze';
die "stat: $!" if !defined($rv);
die "Not a dir" if !$rv;
-d
只是stat(2)
的一个薄薄的包装,所以“看不见”的不是Perl,而是系统
最常见的错误是:
- 当前工作目录不是您认为的那样。(许多人认为脚本所在的目录始终是它。)
- 文件名后面有空格,尤其是换行符。(这里不太可能是这种情况。) 首先
-d analyze
表示“检查文件句柄anaylyze
是否为目录句柄”。你想要
-d 'analyze'
现在,您说这样做仍然会遇到问题,所以请检查您遇到的错误
my $rv = -d 'analyze';
die "stat: $!" if !defined($rv);
die "Not a dir" if !$rv;
-d
只是stat(2)
的一个薄薄的包装,所以“看不见”的不是Perl,而是系统
最常见的错误是:
- 当前工作目录不是您认为的那样。(许多人认为脚本所在的目录始终是它。)
- 文件名后面有空格,尤其是换行符。(这里不太可能是这种情况。)
'anaylyze'
和“analyze”
和“\x61analyze”
之间没有区别。用你想要的。当然,“\x61analyze”
会有所不同。双引号插入并具有许多转义序列,而只有\\\
和\'
在单引号中是特殊的。因此,也就是说,如果我要在.pl中而不是在命令行中进行此检查,单引号将是正确的方法?@PinkElephantsOnParade,对于Perl,'analyze'
和“analyze”
和“\x61analyze”
之间没有区别。用你想要的。当然,“\x61analyze”
会有所不同。双引号插入并具有许多转义序列,而只有\\
和\'
在单引号中是特殊的。