use strict; use warnings ;
use constant HOMBURG => 'HA' ;
my %bar = (homburg => 'homburg!', HOMBURG => 'HomBurg!', HOMBURG, 'Ha!') ;
print join(', ', %bar), "\n" ;
my $k = HOMBURG ;
print "\$k = HOMBURG -> \$k=$k\n" ;
print "\$bar{homburg}=$bar{ homburg }, \$bar{HOMBURG}=$bar{HOMBURG}, ",
"\$bar{\$k}=$bar{$k}, \$bar{+HOMBURG}=$bar{+HOMBURG}\n" ;
####
my $w = '0001' ; my $x = 'zlqq' ; my $y = '-zlxq' ; my $z = '+zlxq' ;
print " \$w=$w, \$x=$x, \$y=$y, \$z=$z\n" ;
print "+\$w=", +$w, ", +\$x=", +$x, ", +\$y=", +$y, ", +\$z=", +$z,"\n" ;
print "-\$w=", -$w, ", -\$x=", -$x, ", -\$y=", -$y, ", -\$z=", -$z, "\n" ;
####
use strict; use warnings ;
use constant HOMBURG => 'HA' ;
print "-HOMBURG=", -HOMBURG, ", -foo=", -foo, "\n" ;
####
my $x = '0x1234' ; my $y = 0x1234 ;
printf "\$x=%s, ~\$x=%s\n", show($x), show(~$x) ;
printf "\$y=0x%X, ~\$y=0x%X\n", $y, ~$y ;
printf "hex(\$x)=0x%X, ~\hex($x)=0x%X\n", hex($x), ~hex($x) ;
printf "\$y=%s,\n ~\$y=%s\n", show($y), show(~$y) ;
sub show {
return '"'. join('', map { sprintf('\\x%02X', ord($_)) } split(//, $_[0])) .'"' ;
} ;
####
use strict; use warnings ;
my $z = ;
printf "\$z=%s, ~\$z=%s\n", show($z), show(~$z) ;
sub show {
return '"'. join('', map { sprintf('\\x%02X', ord($_)) } split(//, $_[0])) .'"' ;
} ;
__DATA__
0x1234
####
use strict; use warnings ;
foreach my $z ('0', '0000', '+0', '-0', ' 0', '0 ', '0E0') { try($z) ; } ;
sub try {
my ($z) = @_ ;
my $bool = $z ? 'True' : 'False' ;
my $zero = $z == 0 ? '==' : '!=' ;
printf "%7s is %5s and %2s 0\n", "'$z'", $bool, $zero ;
} ;