2013-05-14 113 views
1

我是新來的Perl中,我試圖執行一個簡單的程序作爲編碼下面使用草莓的Perl 5,16版:Perl的for循環錯誤

#!usr/bin/perl 

use warnings; 
use strict; 

my @array= {1,2,3,5,7,9}; 
my $i; 

foreach $i (@array) 
{ 
print qq(Element is $i\n); 
} 

我收到下面的輸出:

Element is HASH(0x3f8b4c) 

不過,我應該得到的輸出是:

Element is 1 
Element is 2 
Element is 3 
Element is 5 
Element is 7 
Element is 9. 

在此感謝您的幫助。

回答

10

初始化數組,使用列表

my @array = (1, 2, 3, 5, 7, 9); 

注:括號剛剛理清優先級,他們不是一個特殊的數組語法。

花括號劃定一個匿名hashref,像

my $foobar = { 
    foo => "bar", 
    baz => "qux", 
}; 

到底發生了什麼是分配給你的陣列一個匿名hashref的列表,就像

my @array = ({ 
    1 => 2, 
    3 => 5, 
    7 => 9, 
}) 

會工作。

+1

數組instand但你不應該永遠做後者的初始化。 :) – squiguy 2013-05-14 06:19:38

0
#!usr/bin/perl 

use warnings; 
use strict; 

my @array= (1,2,3,5,7,9); 

foreach my $i (@array) 
{ 
print "Element is ", $i,"\n"; ##Or as u want..many ways to do things in perl 
} 

請嘗試這樣。該數組應該在括號中。用於哈希的大括號。

+3

大括號用於查找散列中的數據。哈希使用圓括號初始化 - 與數組完全相同。 – 2013-05-14 12:30:52

0

你應該使用()來定義{},{}用於defind哈希

#!usr/bin/perl 

use warnings; 
use strict; 

my @array= (1,2,3,5,7,9); 
my $i; 

foreach $i (@array) 
{ 
    print qq(Element is $i\n); 
} 
+5

不是。圓括號用於創建列表,而不是數組。數組和哈希都可以從列表中初始化。 – 2013-05-14 12:29:56