matrizes looping perl foreach, pergunta simples - arrays, perl, loops, for-loop

Perl pergunta muito simples, mas me confundindo muito.

foreach $ val (@ {$ obj-> alguma coisa ()}) {
# isso funciona
}

@array = $ obj-> something ();
foreach $ val (@array) {
# isso não
}

O que eu preciso fazer para fazer o segundo trabalho (ou seja, atribuir o array separadamente), eu usei o primeiro formulário um pouco justo, mas realmente não entendo o que ele faz diferente.

Respostas:

8 para resposta № 1

Provavelmente:

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

Do primeiro exemplo, parece $obj->something() retorna uma referência de matriz, você precisará excluir a referência.

Além disso, você deve realmente use strict; e use warnings;, e declare suas variáveis ​​como

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

Isso tornará muito mais fácil encontrar erros (embora provavelmente não este), mesmo em um script de três linhas.


Cardápio