- or download this
sub explain {
my $val = shift;
print "Numeric value = ", 0+$val, "\n";
print "String value = \"$val\"\n";
print "Truth value = ", $val ? "true\n" : "false\n";
}
- or download this
# explain("23skidoo");
Numeric value = 23
String value = "23skidoo"
...
Numeric value = 0
String value = ""
Truth value = false
- or download this
[robin@robin robin]$ perl -wle 'print 0+"23skidoo"'
Argument "23skidoo" isn't numeric in addition (+) at -e line 1.
23
- or download this
[robin@robin bits & pieces]$ perl -wle 'print 23+"0 but true"'
23
- or download this
# explain([1,2,3]);
Numeric value = 25616
String value = "ARRAY(0x6410)"
Truth value = true
- or download this
my $foo = *bar;
our $bar = "hello\n";
our @bar = ("Hello again!\n");
print $$foo, @$foo;
explain($foo);
- or download this
hello
Hello again!
Numeric value = 0
String value = "*main::bar"
Truth value = true
- or download this
# explain(bless {}, "SomePackage");
Numeric value = 25616
String value = "SomePackage=HASH(0x6410)"
Truth value = true
- or download this
explain(bless {}, "SomePackage");
package SomePackage;
use overload '""' => sub {'string value'};
use overload '0+' => sub {23};
use overload 'bool' => sub {""};
use overload fallback => 1;
- or download this
Numeric value = 23
String value = "string value"
Truth value = false
- or download this
Numeric value = 0
String value = "string value"
Truth value = true
- or download this
explain(bless {}, "SomePackage");
package SomePackage;
use overload '""' => sub {''};
use overload '0+' => sub {23};
use overload fallback => 1;
- or download this
Numeric value = 23
String value = ""
Truth value = true
- or download this
explain(bless {}, "SomePackage");
package SomePackage;
use overload '""' => sub { '' };
use overload '0+' => sub {'00'};
use overload fallback => 1;