Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re^5: hash slice

by Roy Johnson (Monsignor)
on Mar 10, 2005 at 17:56 UTC ( [id://438360]=note: print w/replies, xml ) Need Help??


in reply to Re^4: hash slice
in thread hash slice

It may have not been there when you started to respond, since I tend to revise and expand my answers after posting, but I did explain the behavior you see. I agree that it is not what most people expect.

The slice is being converted internally into a list: ($x[2]..$x[7]), and then that list is being evaluated in a scalar context, which means that it is not a list, but an expression with multiple comma operators. And the comma operator yields its right-hand side.

Interestingly, defined works the same way, so defined(@x[2..7]) is the same as defined($x[7]). So at least when you undef a hash slice, testing it for definedness works as expected, even though several of the values are defined.

I note again, you cannot provide a list to undef or defined. You get a compiler error. For defined, you can say

defined scalar($x[2],$x[3]) or warn "not defined!";
and it does the same as it does for a slice. But you can't use scalar() with undef, because scalar doesn't yield lvalues.

Caution: Contents may have been coded under pressure.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (2)
As of 2024-11-02 10:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    chatterbot is...






    Results (10 votes). Check out past polls.