2012-10-31 70 views
3

我宣佈一個數組,該數組這樣的引用: -倒車陣列使用數組名稱和參考陣列

my @array = (1, 2, 3, 4); 
my $aref = \@array; 

現在,我試圖扭轉數組,使用數組名稱和參考名稱。

print reverse @array, "\n"; 
print reverse @{$aref}, "\n"; 

這是工作的罰款,並打印反向排列在兩種情況下: -

4321 
4321 

但是,如果我嘗試打印相反在同一直線上,它給了我一個奇怪的結果: -

print reverse @array, reverse @{$aref}, "\n"; 

現在,我得到這樣的輸出: -

1234 
4321 

如果我在兩者之間添加一個換行符: -

print reverse @array, "\n", reverse @{$aref}, "\n"; 

我得到這樣的輸出: -

1234 

4321 

因此,有兩個問題,你可以看到: -

  • 1st,使用名稱
  • 2nd,在兩個反轉陣列之間打印了額外的換行符。

我無法理解這種行爲,爲什麼會發生這種情況。此外,我通過功能reverse的文檔檢查是否有任何關於此行爲的提及,但我沒有用餐。任何人都可以解釋這裏發生了什麼?

+0

奔跑穿過'的perl -MO = Deparse ...'可以幫助您瞭解Perl是什麼更容易看到 – Zaid

+0

@Zaid。感謝命令。還有待研究各種命令。 :) –

回答

6
reverse @digits, reverse @$digits, "\n" 

意味着

reverse(@digits, reverse(@$digits, "\n")) 

你想

reverse(@digits), reverse(@$digits), "\n" 

或者乾脆

reverse(@$digits, @digits), "\n" 
+0

哦,男人。我忘記了可以在不改變含義的情況下刪除「括號」的規則。 :(非常感謝你:) –

+0

是的它現在工作。一旦允許,將接受答案。 :) –