in reply to Re^2: Elegant way to return true or nothing from a subroutine?
in thread Elegant way to return true or nothing from a subroutine?
Are you sure? Consider:
use strict; use warnings; use Data::Dump::Streamer; my $value = undef; print !!$value; my $nothing = nothing (); my $retNothing = retNothing (); my $retUndef = retUndef (); my $retFalse = retFalse (); my $retFalse2 = -retFalse (); Dump (\$nothing); Dump (\$retNothing); Dump (\$retUndef); Dump (\$retFalse); Dump (\$retFalse2); sub nothing { } sub retNothing { return; } sub retUndef { return undef; } sub retFalse { return 1 == 0; }
Prints:
$SCALAR1 = \do { my $v = undef }; $SCALAR1 = \do { my $v = undef }; $SCALAR1 = \do { my $v = undef }; $SCALAR1 = \do { my $v = '' }; $SCALAR1 = \do { my $v = 0 };
Updated to add two false cases
and in list context :)
... my @nothing = nothing (); my @retNothing = retNothing (); my @retUndef = retUndef (); my @retFalse = retFalse (); my @retFalse2 = -retFalse (); Dump (\@nothing); Dump (\@retNothing); Dump (\@retUndef); Dump (\@retFalse); Dump (\@retFalse2); ...
Prints:
$ARRAY1 = []; $ARRAY1 = []; $ARRAY1 = [ undef ]; $ARRAY1 = [ '' ]; $ARRAY1 = [ 0 ];
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Elegant way to return true or nothing from a subroutine?
by chromatic (Archbishop) on Oct 10, 2006 at 04:33 UTC | |
by fenLisesi (Priest) on Oct 10, 2006 at 12:20 UTC |