#!/usr/bin/perl
$path = <STDIN>;
if (-e $path) {
print "present";
}
else {
print "Not present";
}
为什么总是打印“不存在”?
答案 0 :(得分:4)
您需要使用chomp
从变量中删除换行符$path = <STDIN>;
chomp $path;
答案 1 :(得分:1)
#!/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
可能是错误的。它始终是代码中的错误的症状。在尝试打开文件之前,请勿检查文件是否存在;试着打开它。在尝试创建目录之前,请勿检查目录是否存在;只是尝试创建它。