我目前正在尝试输入用户输入的文件名,然后搜索该文件。如果找不到该程序,则必须正常终止,如果找到,则应继续。由于我发现的某些原因,“-e”功能不适用于我。尽管我使用了shabang,但我在Mac上可以有所作为。
#!/usr/bin/perl
use strict;
print "Enter the name of a file: ";
my $userInput = <STDIN>;
my $fileName = '/' . $userInput;
if(-e $fileName) {
print "File exist.\n";
die();
} else {
print "File doesnt exist.\n";
die();
}
无论文件名是否正确,都永远不会找到它。
答案 0 :(得分:4)
问题在于,当您按下Enter键时,您还将换行符作为文件名的一部分。您会注意到,如果您打印$filename
获取输入后,您可以使用chomp
函数将其删除:
chomp($userInput);
此外,我不确定您是否确实要在根目录或当前目录中检查文件。如果它在当前,则可能您在斜杠前错过了一个点:
'./' . $userInput;
通过这两项更改,您的代码应如下所示:
#!/usr/bin/perl
use strict;
print "Enter the name of a file: ";
my $userInput = <STDIN>;
chomp($userInput);
my $fileName = './' . $userInput;
if(-e $fileName) {
print "File '$fileName' exist.\n";
die();
} else {
print "File '$fileName' doesnt exist.\n";
die();
}