Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re: Dualvars besides $!

by moritz (Cardinal)
on Jan 27, 2014 at 17:11 UTC ( #1072250=note: print w/ replies, xml ) Need Help??

in reply to Dualvars besides $!

Not a variable, but a value: the value for false, which you can generate with !1.

It return '' in string context and 0 in numeric context, and doesn't warn in numeric context like the empty string normally does:

$ perl -wE 'say 0+""' Argument "" isn't numeric in addition (+) at -e line 1. 0 $ perl -wE 'say 0+!1' 0

My version of Scalar::Util doesn't export an is_dual function, so I can't check. It helps to type that without the _ :-)

Update: I should have mentioned it earlier: even though the thing is called a "dualvar", it's not actually variables that are tested; values are being tested. It makes no difference if those values are return values, stored in array, or are stored in a scalar variable.

Comment on Re: Dualvars besides $!
Select or Download Code
Replies are listed 'Best First'.
Re^2: Dualvars besides $!
by davido (Archbishop) on Jan 27, 2014 at 18:05 UTC

    A value for "true" is also dualvar:

    perl -MScalar::Util -E 'say Scalar::Util::isdual(!0)'

    ...outputs '1', indicating the test was true.


Re^2: Dualvars besides $!
by szabgab (Priest) on Jan 27, 2014 at 17:36 UTC
    wow !1. I have not heard of that earlier. greping the pods of 5.18.2 - it is not mentioned there either. But it works as you showed.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (6)
As of 2015-11-26 07:06 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (696 votes), past polls