2013-05-16 67 views
0

我在做什麼錯了?打開的文件不是空的。但我仍然得到全局符號需要顯式包裝

全局符號 「$ tabbb」 需要明確包名在mix.pl線8

#!/usr/bin/perl 

use strict; 
use warnings; 

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

是真正的錯誤消息?沒有名爲'$ tabbb'的變量。 – Barmar

+0

請勿使用裸詞文件句柄。改用'my $ fh'。 – squiguy

+0

對不起,錯誤是從舊的「版本」複製的 – nervosol

回答

2

你想print @tab;,而不是print @$tab;

1

您已正確使用use strictuse 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; 
}