Perl用户输入文件搜索

时间:2018-10-17 00:49:48

标签: file perl io

我目前正在尝试输入用户输入的文件名,然后搜索该文件。如果找不到该程序,则必须正常终止,如果找到,则应继续。由于我发现的某些原因,“-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();
}

无论文件名是否正确,都永远不会找到它。

1 个答案:

答案 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();
}