Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

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.

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 all is quiet...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (3)
As of 2018-05-27 12:35 GMT
Find Nodes?
    Voting Booth?