/ / Indexando diretamente na matriz retornada em Perl - perl

Indexando diretamente na matriz retornada em Perl - perl

Esta pergunta foi feita tanto sobre o PHP Aqui e Aqui, e eu tenho a mesma pergunta para Perl. Dada uma função que retorna uma lista, existe alguma maneira (ou qual é a melhor maneira) de indexar imediatamente sem usar uma variável temporária?

Por exemplo:

my $comma_separated = "a,b,c";
my $a = split (/,/, $comma_separated)[0]; #not valid syntax

Eu vejo por que a sintaxe na segunda linha é inválida, então estou me perguntando se há uma maneira de obter o mesmo efeito sem primeiro atribuir o valor de retorno a uma lista e indexar a partir disso.

Respostas:

25 para resposta № 1

Basta usar parênteses para definir sua lista e, em seguida, indexá-la para obter o (s) elemento (s) desejado (s):

my $a = (split /,/, $comma_separated)[0];

8 para resposta № 2

Assim como você pode fazer isso:

($a, $b, $c) = @array;

Você consegue fazer isso:

my($a) = split /,/, $comma_separated;

my $a no LHS (lado esquerdo) é tratado como contexto escalar. my($a) é o contexto da lista. É uma lista de um único elemento, portanto, obtém apenas o primeiro elemento retornado de split.

Ele tem o benefício adicional de limitar automaticamente a divisão, para que não haja perda de trabalho se $comma_separated é grande.