#!/usr/bin/perl
$path = <STDIN>;
if (-e $path) {
print "present";
}
else {
print "Not present";
}
为什么它总是打印"不存在"?
您需要使用 chomp 从变量中删除换行符:
$path = <STDIN>;
chomp $path;
- 您忘了检查 EOF。
- 您忘记删除尾随换行符。
- 当您无法检查该目录是否存在时,您说该目录不存在。
#!/usr/bin/perl
use strict;
use warnings qw( all );
defined( my $path = <STDIN> );
or exit;
if (-e $path) {
print "Present";
}
elsif ($!{ENOENT}) {
print "Not present";
}
else {
die("stat: $!");
}
最后,首先使用-e
可能是错误的。这始终是代码中错误的症状。在尝试打开文件之前,不要检查文件是否存在;只是尝试打开它。在尝试创建目录之前,不要检查目录是否存在;只是尝试创建它。