> You may be in luck, and it may do precisely what you want, but by the
> time you made sure it does, you've already wasted far too much time on
> it. Here is an example that mosty likely *not* do what you want:
> 
>       $i = 20;
>       my($x, $y, $z) = ($i++, $i, $i++);

This is a great example, as only your warning hinted that it did
something other than:

  x = 20
  y = 21
  z = 21

  i = 22

> As to what the next does,
> 
>       $i = 20;
>       my($x, $y, $z) = ($i++, +$i, $i++);
> 
> your guess is a good as any.

You are trying too hard to catch us out, the "+" just enforces scalar
context so "$i" and "+$i" are identical - and thus we can easily
conclude it is the same as the last example.

Here is a good addition to Bart's examples:

my $i = 20;
my ($x, $y, $z) = ($i++, -$i, $i++);
print "$x $y $z\n";

Understanding the other examples... can you guess what does it prints?

Now, it appears that perl's evaluation order is accident rather than
design - so you SHOULD NOT rely on it.  Avoid causing side-effects on
variables you use more than once... including the multiple use of shift
in assignment.

Jonathan Paton

=====
s''! v+v+v+v+  J r e P    h+h+h+h+ !s`\x21`~`g,s`^ . | ~.*``mg,$v=q.
 P ! v-v-v-v-  u l r e r  h-h-h-   !12.,@.=m`.`g;do{$.=$2.$1,$.=~s`h
 E !   v+v+v+  s     k e  h+h+     !`2`x,$.=~s`v`31`,print$.[$v+=$.]
 R !     v-v-  t H a c h  h-       !}while/([hv])([+-])/g;print"\xA"
 L !             A n o t           !';$..=$1while/([^!]*)$/mg;eval$.

__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com

Reply via email to