![]() |
|
The stupid question is the question not asked | |
PerlMonks |
comment on |
( #3333=superdoc: print w/replies, xml ) | Need Help?? |
The way I see it, the backslash \( ) syntax has to evaluate its arguments in list context.
It also has to treat @arrays and %hashes with care: should it expand it out into a list & take references of its elements, or just take the reference to the actual @array / %hash itself? To disambiguate the two, the second command shows that perl won't expand @array / %hash into LIST unless you have specifically parenthesized it. The third command shows that if @array / %hash was the only argument to \( ), then perl makes the (inconsistent) choice to expand it into a LIST, and take the reference of each list element. A probable rationale is that if you wanted the reference to the actual hash itself, you would do \%hash instead of \(%hash). The fourth command is like the second command. The empty list puts perl back in the second command's evaluation "frame of mind". In reply to Re^3: Why does foo() evaluate in array context in "${\foo()}"?
by repellent
|
|