2010-11-11 127 views
3

真的很簡單的perl問題,但讓我很困惑。perl foreach循環數組,簡單問題

 
foreach $val (@{$obj->something()}) { 
    # this works 
} 

@array = $obj->something(); 
foreach $val (@array) { 
    # this does not 
} 

什麼我需要做的,使第二工作(即:分配seperately數組),我用的第一種形式公平一點,但並不真正瞭解它做什麼不同。

回答

8

大概:

@array = @{$obj->something()}; 

從第一個例子,它看起來像$obj->something()返回數組引用,則需要取消對它的引用。

另外,你真的應該use strict;use warnings;,並宣佈像

my @array = @{$obj->something()}; 
foreach my $val (@array) { 
    # this does not 
} 

的變量這將使它更容易找到錯誤(雖然可能不是這一個),甚至在三線腳本。

+0

完美,歡呼聲。 – Sirex 2010-11-11 10:41:20