Chas. Owens wrote:


On Sat, Jul 1, 2017, 12:44 Shlomi Fish <[email protected] 
<mailto:[email protected]>> wrote:

    Hi Shawn!

    On Sat, 1 Jul 2017 11:32:30 -0400
    Shawn H Corey <[email protected] <mailto:[email protected]>> wrote:

    > !!$i which is !(!(0)) which is !(1) which is 0
    >

    I suspect !1 returns an empty string in scalar context.


!1 returns PL_sv_no (an internal scalar variable). It is a dualvar that 
contains the empty string, the int 0 and the double 0.0. depending on the 
context the value is used in, it will be one of those values.

Many people think it is an empty string because the print function forces 
string context.



perl -e 'my $i =0; $i = defined($i) ? (!!$i) : 0; use Data::Dumper; print 
Dumper($i);'


A printing function should not force a context but use the context it is 
operating in.

How do you print something without having a string context enforced upon you?

--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/


Reply via email to