如何更正以下perl程序以检查目录是否存在


#!/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可能是错误的。这始终是代码中错误的症状。在尝试打开文件之前,不要检查文件是否存在;只是尝试打开它。在尝试创建目录之前,不要检查目录是否存在;只是尝试创建它。

最新更新