On 8/3/05, Aankhen <[EMAIL PROTECTED]> wrote:
> On 8/3/05, Piers Cawley <[EMAIL PROTECTED]> wrote:
> > So how *do* I pass an unflattened array to a function with a slurpy
> > parameter?
>
> Good question. I would have thought that one of the major gains from
> turning arrays and hashes into references in scalar context is the
> ability to specify an unflattened array or a hash in a sub call
> without any special syntax...
Well, you can, usually. This is particularly in the flattening
context. In most cases, for instance:
sub foo ($a, $b) { say $a }
my @a = (1,2,3);
foo(@a, "3");
Passes the array into $a. If nothing flattened by default, then you'd
have to say, for example:
map {...} [EMAIL PROTECTED];
And even:
for [EMAIL PROTECTED] -> $x {...}
Which I'm not sure people want.
And the way you pass an array in slurpy context as a single reference
is to backwhack it. What it comes down to is that either you're
backwhacking things a lot or you're flattening things a lot. Perl
currently solves it by making the common case the default in each
"zone" of parameters.
I would be interested to hear arguments to the contrary, however.
Luke