dicen que una subrutina Perl devuelve una matriz:¿Cómo puedo acceder selectivamente a elementos devueltos por una subrutina de Perl?
sub arrayoutput
{
...some code...
return @somearray;
}
Quiero tener acceso a un elemento de la matriz única específica de esto, digo el primero. Entonces podría hacer:
@temparray=arrayoutput(argument);
y luego consultar $temparray[0]
.
Pero este tipo de referencia corta no funciona: $arrayoutput(some argument)[0]
.
Estoy acostumbrado a Python y nuevo en Perl, así que sigo buscando una forma corta, intuitiva, similar a la de pitón (a=arrayoutput(some argument)[0]
) para obtener este valor. Mis programas de Perl se están volviendo muy largos y el uso de arreglos temporales como ese parece feo. ¿Hay alguna manera en Perl para hacer esto?
+1, esto funciona. Pero nuevamente necesito crear una variable intermedia para acceder al valor. Pero este es un paso mejor, ya que al menos puedo usarlo cuando de todos modos necesito una asignación variable. Pero no en otros escenarios, digamos una instrucción 'print (foo()) [3]' o una instrucción 'if ((foo()) [3] ...)'. –
Puedes hacer ambas cosas. Ver mi respuesta actualizada. – toolic
Tenga en cuenta que 'print (foo()) [7]' no funcionará como se esperaba, ya que perl supone que los paréntesis pertenecen a la llamada de función, y así lo analiza como equivalente a '(print foo()) [7] '. O bien 'print ((foo()) [7])' o, más idiomáticamente, 'print + (foo()) [7]' funcionarán. –