2

我收到以下 perl 错误。

Can't use string ("") as a symbol ref while "strict refs" in use at test173 line 30.

粘贴下面的代码。第 30 行是打开语句。它在公开声明中失败了。我有use strict;use warnings;在脚本中。错误表示什么?如何更改代码以解决此错误。

my $file = 'testdata';
open($data, '<', $file) or die "Could not open '$file'\n";
print "file data id:$data\n"; 
@iu_data = <$data>;
$totalLineCnt = @iu_data;
print "total line cnt: $totalLineCnt". "\n";
4

1 回答 1

5

确保您之前没有为 $data 赋值。我只需三行即可重现您的问题:

use strict;
my $data = ''; 
open($data, '<', 'test.txt');

例如,您可以通过创建新范围来解决问题:

use strict;
my $data = ''; 
{
  my $data;
  open($data, '<', 'test.txt');
  close($data);
}

或者,您可以$data在使用它之前取消定义:

use strict;
my $data = '';
undef $data; 
open($data, '<', 'test.txt');
close($data);

等等等等……</p>

于 2012-07-05T00:17:05.650 回答