Say a Perl subroutine returns an array:
sub arrayoutput
{
...some code...
return @somearray;
}
I want to access only a specific array element from this, say the first. So I could do:
@temparray=arrayoutput(argument);
and then refer to $temparray[0]
.
But this sort of short reference doesn't work: $arrayoutput(some argument)[0]
.
I am used to Python and new to Perl, so I'm still looking for some short, intuitive, python-like way (a=arrayoutput(some argument)[0]
) to get this value. My Perl programs are getting very long and using temporary arrays like that seems ugly. Is there a way in Perl to do this?
Pull off the first argument only via list context:
my ( $wanted ) = array_returning_sub( @args );
TIMTOWTDI with a slice:
my $wanted = ( array_returning_sub( @args ) )[0];
Both styles could be extended to extract the n'th element of the returned array, although the list slice is a bit easier on the eye:
my ( undef, undef, $wanted, undef, $needed ) = array_returning_sub( @args );
my ( $wanted, $needed ) = ( array_returning_sub( @args ) )[2,4];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With