[tpm] dereferencing anonymous hashes

Uri Guttman uri at stemsystems.com
Thu Apr 12 08:21:17 PDT 2007


>>>>> "RJ" == Rob Janes <janes.rob at gmail.com> writes:

  RJ> I guess I've just never seen $x = (); before.  doesn't seem very
  RJ> useful unless it's a list expression.

  RJ> [robj at localhost ~]$ perl -e '$x=(5,44); print "$x\n";'
  RJ> 44

  RJ> [robj at localhost ~]$ perl -e '$x=@x=(5,44); print "$x\n";'
  RJ> 2

  RJ> So the comma operator behaves differently in a scalar context from
  RJ> how it behaves in a list context.

i will repeat this again. THERE IS NO SUCH THING AS A LIST IN SCALAR
CONTEXT. what you see there in the first line is the comma operator
which just returns its right side expression. in an actual list the
comma is NOT AN OPERATOR but a separator. it is pure syntax in a list
and no opcodes are generated.

  RJ> [robj at localhost ~]$ perl -e 'sub x { print "side effect\n"; return 5 } $x=
  RJ> (x,44); print "$x\n";'
  RJ> side effect
  RJ> 44

  RJ> Showing that the comma operator is useful for side effects in
  RJ> scalar context mode.

useful? that is what it is designed for. it was taken from c which has
the same operator but no list context to confuse things.

uri

-- 
Uri Guttman  ------  uri at stemsystems.com  -------- http://www.stemsystems.com
--Perl Consulting, Stem Development, Systems Architecture, Design and Coding-
Search or Offer Perl Jobs  ----------------------------  http://jobs.perl.org


More information about the toronto-pm mailing list