Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: nonempty false list

by toolic (Bishop)
on Mar 10, 2011 at 18:15 UTC ( [id://892478]=note: print w/replies, xml ) Need Help??


in reply to nonempty false list

I suspect your 1st line returns no because the slice is being evaluated in scalar context and it is returning the last element in the list, which is undef. I will attempt to search for documentation to support this hypothesis.

If you switch the 1 and the 2, you get a yes:

$ perl -e '%x=(1 => 2); if(@x{2, 1}) { print "yes\n" } else { print "n +o\n" }' yes
When you do the hash slice, you are asking for key 1 (which exists) and key 2 (which does not exist):
use warnings; use strict; use Data::Dumper; my %x = (1 => 2); my @y = @x{1, 2}; print Dumper(\@y); __END__ $VAR1 = [ 2, undef ];

Update: see also: Context tutorial

Update: from Scalar values (emphasis mine):

If you evaluate an array in scalar context, it returns the length of the array. (Note that this is not true of lists, which return the last value, like the C comma operator, nor of built-in functions, which return whatever they feel like returning.)

Replies are listed 'Best First'.
Re^2: nonempty false list
by ikegami (Patriarch) on Mar 10, 2011 at 19:00 UTC

    Note that this is not true of lists, which return the last value

    That's referring to the list operator («EXPR,EXPR,...,EXPR»), but it's a hash slice here. Hash slices in scalar context return the last element of the slice too, though.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://892478]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (5)
As of 2024-04-23 16:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found