ISAI student has asked for the wisdom of the Perl Monks concerning the following question:
Hello all. This question pertains to PERL5.* I know that I can use a function output as an array easily, w/o needing temporary arrays I.E.:
foreach $line ($self->getAllLines() {... }
I want to be able to do the same with a sub that return hashes, but i can't get it to work. See tiny example below using perl -e:
However, using a variable to get the hash and then using keys on the variable, works:liord@analog4 267 > perl -e 'sub a { %a = ( 1 , "ho" ); return %a} pri +nt keys a(), "\n"; ' Type of arg 1 to keys must be hash (not subroutine entry) at -e line 1 +, near ")," Execution of -e aborted due to compilation errors.
liord@analog4 268 > perl -e 'sub a { %a = ( 1 , "ho" ); return %a} %t= + a() ; print keys %t , "\n"; ' 1
Is there a way to avoid defining %t, and make the code more compact?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Treating sub output as a hash
by chromatic (Archbishop) on Jan 26, 2012 at 17:20 UTC | |
|
Re: Treating sub output as a hash
by moritz (Cardinal) on Jan 26, 2012 at 17:05 UTC | |
|
Re: Treating sub output as a hash
by AnomalousMonk (Archbishop) on Jan 26, 2012 at 17:26 UTC | |
|
Re: Treating sub output as a hash
by JavaFan (Canon) on Jan 26, 2012 at 22:33 UTC |