2009-06-17 215 views

回答

25

該數組有一個元素,因爲您分配了一個元素。考慮以下內容:

@array = undef; # Assigns the value 'undef' to @array 
@array =();  # Assigns the empty list to @array 
undef @array; # Undefines @array 

它們看起來相似,但第一行與其他兩個不同(它們是相同的)。第一行產生一個元素(數值爲undef)。另外兩個導致一個空數組。在Perl中,undef既是一個值又是一個運算符。第一行使用它作爲值,最後一行使用它作爲操作符。通常不需要清除數組。宣佈時它們是空的:

my @array; # There's nothing in here, yet 
8

在Perl中,undef是一個有效的值。您可以將一個(或任意數量)的undef放入數組或列表中。

如果你想刪除一個數組的所有元素,這樣做:

@my_array =(); 
+1

或者,您可以執行「undef @my_array」 – 2009-06-17 13:20:15

+0

或$#my_array = -1 ;.或拼接(@ my_array,0,@ my_array);. – ysth 2009-06-17 14:52:35

11

更多關於在Perl布爾值見What is Truth?。 (如果您是從其他語言來了,你可能會在幾個其他的驚喜,所以這是值得一讀。)

下面是文章的關鍵位:

definedundef都不錯爲 測試和設置標量。不過,不要嘗試使用 。目前, defined(@array)返回true,如果Perl 已分配存儲陣列 東西是奇怪的,並沒有用 給普通程序員。要返回 數組到初始狀態,我們說:

@array =();  # good 

要說@array = undef是讓@array 包含一個單元素列表,與 單個元素是標量值 undef。這幾乎沒有我們 想要的。

另一個提示:本地化您的變量my:my @array =(#whatever);

相關問題