0

我做错了什么?打开的文件不为空。但我仍然得到

全局符号“$tabbb”需要在 mix.pl 第 8 行显示包名。

#!/usr/bin/perl

use strict;
use warnings;

open FILE, "<", "seeds.data" or die $!;
my @tab = <FILE>;
print @$tab;
4

2 回答 2

2

你想要print @tab;而不是print @$tab;.

于 2013-05-16T18:28:00.620 回答
1

你已经正确使用了use strictand use warnings,其中一个好处是如果你使用了一个你没有声明的变量,Perl 会警告你。错误信息

全局符号“$tabbb”需要在 mix.pl 第 8 行显示包名。

就是说,因为您正在使用strict,所以您不能引用$tabbb尚未声明的名为的变量。你的线路

print @$tab;

将标量变量取消引用$tab为数组,并且由于您尚未声明 a$tab我想这就是错误消息的含义。但是你确实有一个包含你打开的文件内容的数组变量@tab,所以写

print @tab;

反而。

最重要的是,逐行读取文件并写入

use strict;
use warnings;

open my $fh, '<', 'seeds.data' or die $!;
while (<$fh>) {
  print;
}
于 2013-05-16T18:45:37.053 回答