#!perl -w
use strict;
my $test;
$test = 2;
pr( 'no_zero' , $test , no_zero($test) ); # -> '1'
pr( 'a_zero' , $test , a_zero($test) ); # -> '1'
$test = 'pop';
pr( 'no_zero' , $test , no_zero($test) ); # -> 'undefined value' or ''
pr( 'a_zero' , $test , a_zero($test) ); # -> '0'
$test = undef;
pr( 'no_zero' , $test , no_zero($test) ); # -> ''
pr( 'a_zero' , $test , a_zero($test) ); # -> '0'
sub no_zero
{
my $n = shift;
my $re = qr/^ \d+ $/x;
return
#defined $n && $n =~ m/$re/
scalar( defined $n && $n =~ m/$re/ )
;
}
sub a_zero
{ return no_zero( $_[0] ) || 0; }
sub pr
{
my ($func , $val , $result) = @_;
printf "%7s( '%s' ): '%s'\n" , ( $func , def($val) , def($result) );
sub def
{ my $v = shift;
return ( (defined $v) ? $v : 'undefined value' );
}
}
####
sub if_integer
{ my $i = shift;
return defined $i && $i =~ m/^\d+$/;
}
####
return defined $i && $i =~ m/^\d+$/ || 0;