2010-11-11 4 views
3

Question perl vraiment simple, mais me déroute grandement.perl foreach boucles de tableau, question simple

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

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

Que dois-je faire pour que le second travail (i.e.: attribuer le tableau séparement), je l'ai utilisé la première forme un peu juste, mais ne comprennent pas vraiment ce qu'il fait différemment.

Répondre

8

Probablement:

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

Dès le premier exemple, il ressemble $obj->something() retourne une référence de tableau, vous aurez besoin de déréférencer.

En outre, vous devriez vraiment use strict; et use warnings;, et déclarer vos variables comme

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

Cela rendra beaucoup plus facile de trouver des erreurs (mais probablement pas celui-ci), même dans un script de trois lignes.

+0

parfait, à la vôtre. – Sirex

Questions connexes