如何在perl文件测试运算符中使用标量变量?

时间:2013-02-23 15:39:41

标签: perl

我在perl的第一个下午,我很难弄清楚我的脚本出了什么问题。我似乎没有正确使用文件测试操作符,但我不确定我是如何错误地使用它。

use v5.14;

print "what file would you like to find? ";
my $file = <STDIN>;
my $test = -e $file;
if ($test) {
print "File found";
}
else {
print "File not found";
}

我也尝试用

替换第5行和第6行
if (-e $file) {

和第6行

if ($test == 1) {

没有运气。

2 个答案:

答案 0 :(得分:4)

问题不在于测试,而是$file的内容。执行$file = <STDIN>;时,行尾不会被删除,并且您可能没有文件名中包含行尾的文件。

chomp($file);

阅读之后,你应该好好去。

答案 1 :(得分:1)

http://perldoc.perl.org/functions/-X.html

use v5.14;

use warnings;
use strict;

print "what file would you like to find? ";
#chomp to remove new line
chomp my($filename = <STDIN>);

#test if exists but can still be an empty file
if (-e $filename) {
    print "File found\n";
} else {
        print "File not found\n";
}