2009-06-17 288 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);

相关问题