我做错了什么?打开的文件不为空。但我还是得到了
全局符号“$ tabbb”需要在mix.pl第8行显式包名。
#!/usr/bin/perl
use strict;
use warnings;
open FILE, "<", "seeds.data" or die $!;
my @tab = <FILE>;
print @$tab;
答案 0 :(得分:2)
您希望print @tab;
代替print @$tab;
。
答案 1 :(得分:1)
您已正确使用use strict
和use warnings
,其中一个好处是,如果您使用未声明的变量,Perl会发出警告。错误消息
全局符号“$ tabbb”需要在mix.pl第8行显式包名。
表示,因为您使用的是strict
,所以您无法引用尚未声明的名为$tabbb
的变量。你的行
print @$tab;
将标量变量$tab
解引用为数组,因为您尚未声明$tab
,我想这就是错误消息的含义。但是你做有一个数组变量@tab
,其中包含你打开的文件的内容,所以写
print @tab;
代替。
最重要的是,逐行读取文件并写入
use strict;
use warnings;
open my $fh, '<', 'seeds.data' or die $!;
while (<$fh>) {
print;
}