Not sure what it would have to... :)
Yeah ... sometimes I get a bit literal about these things. My reasoning (undoubtedly flawed) is along the lines that the square brackets ([]) return a reference to whatever is within those brackets ... and if it's a list that's within those brackets (as stated by the docs), then those square brackets must be returning a reference to that list.
it returns a reference to an anonymous array which has been initialised with references to the list's individual elements/values
Something about that doesn't feel right to me. Do you mean "it returns a reference to an anonymous array which has been initialised with the list's individual elements/values" - and that, in this case, those "elements/values" are actually references ?
It's probably a bit confusing to be asking these sorts of questions in terms of the return of \(@foo). Surely there are simpler constructs that also return a list. Does, eg (1..10) return a list ?
Cheers, Rob | [reply] [d/l] [select] |
Do you mean "it returns a reference to an anonymous array which has
been initialised with the list's individual elements/values" - and
that, in this case, those "elements/values" are actually references ?
Depends on exactly which list we're talking about... I was
referring to the original values stored in @foo, and you're
presumably thinking of the values after the referencing operation \(...) has
been applied — in a human language it's not as easy to express
things clearly as it is in Perl :)
Anyhow, the net effect of this is:
my @foo = (1, 2, "foo");
my $bar = [\(@foo)];
use Data::Dumper;
print Dumper $bar;
__END__
$VAR1 = [
\1,
\2,
\'foo'
];
IOW, "$bar->[2]" would produce something like SCALAR(0x814ec28),
which you'd need to dereference (${$bar->[2]}) to get at the value
"foo".
And yes, (1..10) is a list.
| [reply] [d/l] [select] |
Depends on exactly which list we're talking about...
Yes - we were talking about different lists.
I think I start to see the light. Thanks almut, thanks Fletch.
Cheers, Rob
| [reply] |