无法打开文件以便在perl中读取

时间:2014-04-18 15:24:55

标签: perl

我必须在perl脚本中读取文件。我已经完成了我发现的大多数资源告诉我要做的事情,但我继续得到同样的错误,这是我的代码:

print "Input file name: ";
$file = <>;
open($fileHandle, "<", $file) or die "cannot open < $file: $!";

结果:

cannot open < scores.dat
: No such file or directory at ./project5.pl line 6, <> line 1.

这样做我每次都会收到错误。任何想法,我是perl的新手所以我为一个愚蠢的错误做好了准备,但是是的,得分确实存在。

3 个答案:

答案 0 :(得分:4)

您似乎正在读取行尾字符而不是从包含文件名的变量中删除它(当它打印消息说文件不存在时,文件名和文件名之间有换行符。冒号“:”)。获取文件名后,添加以下行:

chomp $file;

这将只删除字符串末尾的换行符。

不要将chompchop混淆(后者删除字符串的最后一个字符,无论它是什么)。

编辑:感谢ThisSuitIsBlackNot抓住我的拼写错误。

答案 1 :(得分:1)

您必须从$file中存储的用户输入中删除行尾字符。

您可以使用替换手动执行此操作:

$file = <>; 
$file =~ s/\n$//; 

或者更好,使用chomp:

$file = <>; 
chomp($file); 

另一方面,你的&#34; scores.dat&#34;文件必须相对于当前脚本存在。如果它位于另一个目录中,请确保您使用相对路径,或将dir路径附加到$file

答案 2 :(得分:0)

同意其他答案,请使用

chomp $file;

要帮助检测它,请使用

open my $fileHandle, "<", $file or die "cannot open '$file': $!";

然后,流氓线路馈送(或者可能在未来的空间中)将更加明显。