2015-01-11 31 views
1

问题是这样的: 我有一个循环。虽然我重复这个循环,我想创建一个数列的名称如下:array1array2array3 ...Perl连接阵列的名称与现有值

我想知道是否有是连接这些名字在Perl 我想是这样的一个方式,但我得到一个错误

$i = 0; 
while ($i <= 5) { 
    @array . $i =(); 
    $i++; 
} 

回答

4

是的,你可以这样做,但不是,你不应该做到这一点。

你应该做的,而不是为使用引用的数组匿名数组

@arrayrefs =(); 
$i = 0; 
while ($i <= 5) { 
    $arrayrefs[$i] = []; 
    $i++; 
} 

,或者更简洁:

@arrayrefs = ([], [], [], [], [], []); 

但为了完整性。 。 。你可以做到这一点,通过使用“符号引用”:

$i = 0; 
while ($i <= 5) { 
    my $name = "array$i"; 
    @$name =(); 
    $i++; 
} 

(当然,数组默认为空数组无论如何,所以这是不是真的需要。)


顺便说一句,请注意,它实际上是习惯使用for循环而不是这种简单的情况下,while循环。无论是这样的:

for ($i = 0; $i <= 5; $i++) { 
    ... 
} 

或本:

for $i (0 .. 5) { 
    ... 
}