如何在perl中使用带有File句柄的关键字?

时间:2014-02-27 03:05:21

标签: perl file

我正在使用严格和警告,我正在使用我的关键字与文件句柄,但它似乎没有工作。以下是一个例子。

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行使用。

我如何避免此类警告/错误?

1 个答案:

答案 0 :(得分:3)

问题是您将空字符串分配给$filehandle,因此它将是字符串类型,但是您传递的是打开,expects the first parameter to be a filehandle。此外,使用openopen(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输出错误。这样您的程序将返回错误代码。