>>>>> "NW" == Nathan Wiger <[EMAIL PROTECTED]> writes:
NW> If arrays are maintained "properly" (not flattened) in Perl, then they
NW> will remain separate, whether as parameters, across = assignments, etc,
NW> etc. The same goes true for mixing arrays and scalars and hashes:
NW> @stuff = docoolstuff(%hash, $var, @array);
NW> @stuff = docoolstuff(%hash, $var) = @array;
Then assignment arguments must be a the tail of the prototype. A bit
of limitation. If you do want to persue this, and it is acceptable
it should come in on a non-calling parameter. A seperate communication
channel.
Hmm, your proposal also make a non-lvaluable subroutine lvaluable. With
arbitrary values.
sub foo { launch_missles if $_[0] }
foo = 35;
The current thinking in -internals is that @_ will continue to flatten
the arguments. So any rvalues being pushed in will be lost.
>> By limiting it to only the programmer specified arguments, you reduce
>> complexity with no loss of generality.
NW> You do lose the ability to chain subs together, which is neat. For
NW> example, using a sub a middle value to a split():
NW> @user = ($uid, $x, $p->format) = split /:/, <PASSWD>;
This sounds like a valid reason. But again if a seperate channel is provided
then it is much clearer what is going on.
But if tieing were made simpler then this could be done (with a little
more syntax.
tie $magic, (something to do with $p->format)
@user = ($uid, $x, $magic) = split /:/, <PASSWD>;
Or perhaps something along the lines of ksh's <() syntax?
@user = ($uid, $x, >($p->format)) = ...
<chaim>
--
Chaim Frenkel Nonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183