Perl5 true false, :
, , , .
sub does_this_variable_look_like_a_perl_float {
$number_of_arguments = 0 + @_;
if ($number_of_arguments != 1){
print "ArgumentException, you passed an incorrect number of parameters.\n";
return 0;
}
$variable = $_[0];
$first_argument = shift;
if ( ref(\$first_argument) eq 'ARRAY') {
print("arrays are not floats");
return 0;
}
if ($variable =~ m/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/){
return 1;
}
return 0;
}
sub is_convertable_to_float__casting_and_killing_canaries {
$number_of_arguments = 0 + @_;
if ($number_of_arguments != 1){
print "ArgumentException, you passed an incorrect number of parameters.\n";
return 0;
}
my $result = 0;
$variable = $_[0];
use Error qw(:try);
try {
use Scalar::Util qw(blessed dualvar isdual readonly refaddr reftype
tainted weaken isweak isvstring looks_like_number
set_prototype);
$numeric_code = looks_like_number( $variable );
if ($numeric_code != 0){
$result = 1;
}
else{
$result = 0;
}
}
catch Error with { $result = 0; };
return $result;
}
sub is_float {
return does_this_variable_look_like_a_perl_float(@_);
}
print(is_float(""));
print(is_float("yeah"));
print(is_float(" "));
print(is_float("\t\n"));
print(is_float(" 58 "));
print(is_float('e'));
print(is_float('0xf'));
print(is_float('\xf'));
print(is_float("1,234.56"));
print(is_float("35,5"));
print(is_float(undef));
print(is_float("NaN"));
print(is_float("inf"));
print(is_float("infinity"));
print(is_float("null"));
print(is_float("12.34.56"));
print(is_float("四"));
print(is_float("#56"));
print(is_float("56%"));
print(is_float("56^3"));
print(is_float("+1e1.5"));
print(is_float("+-1"));
print("\n");
print(is_float(35));
print(is_float(35.5));
print(is_float(35.00000));
print(is_float("35"));
print(is_float(0));
print(is_float(07));
print(is_float(000));
print(is_float(-13));
print(is_float(12e2));
print(is_float(12.2e2));
print(is_float(12.E4));
print(is_float(.4));
print(is_float(6e7777777777777));
print(is_float(1.797693e+308));
print(is_float("0E0"));
print(is_float(0**0));
print(is_float("-5e-5"));
print(is_float("+5e+5"));
print(is_float(0xfade));
print(is_float(0b1100_0000));
print("\n");
print(is_float(5,6,7))
my @s = (10,20,30);
print(is_float(@s));
$arr = (5, 'foo', 7);
print(is_float($arr));
print(is_float((1, 2, 3)));
print(is_float(35,5));
Results of 'do_this_variable_look_like_a_perl_float ():
0000000000000000000000
11111111111111111111
Results of 'is_convertable_to_float__casting_and_killing_canaries ():
0000100000011100000000
11111111111111111111
source
share