我正在使用严格和警告,我正在使用我的关键字与文件句柄,但它似乎没有工作。以下是一个例子。
use strict;
use warnings;
print "ENTER THE INPUT FILE NAME:= ";
my $filename = <STDIN>;
chomp $filename;
my $filehandle='';
unless ( open($filehandle, $filename) ) {
print "Cannot open file \"$filename\"\n\n";
exit;
}
my @data = <$filehandle>;
close $filename;
我收到以下错误消息:
不能使用字符串(&#34;&#34;)作为符号引用,而#34; strict refs&#34;在test.pl第9行第1行使用。
我如何避免此类警告/错误?
答案 0 :(得分:3)
问题是您将空字符串分配给$filehandle
,因此它将是字符串类型,但是您传递的是打开,expects the first parameter to be a filehandle。此外,使用open
:open(FILEHANDLE, MODE, EXPR)
的3参数形式更为清晰:
use strict;
use warnings;
print "ENTER THE INPUT FILE NAME:= ";
my $filename = <STDIN>;
chomp $filename;
open my $filehandle, '<', $filename or die "Cannot open file '$filename': $!\n";
my @data = <$filehandle>;
print @data;
close $filename;
其他说明:遇到错误时,最好使用die
输出错误。这样您的程序将返回错误代码。