my $foo; my $bar = '043'; my $s1 = '$foo = $bar'; print "s1: ", $s1, "\n"; print "eval=", eval($s1)//$@, ", \$foo=$foo\n"; my $s2 = "\$foo = $bar"; # same as '$foo = '.$bar print "s2: ", $s2, "\n"; print "eval=", eval($s2)//$@, ", \$foo=$foo\n"; __END__ s1: $foo = $bar eval=043, $foo=043 s2: $foo = 043 eval=35, $foo=35 #### use Data::Dump; my $val = "034"; $val = oct $val if $val=~/^0/; dd $val; # 28 # or, for a list of values: my @vals = qw/ 10 20 0b1101 0xF 023 /; /^0/ and $_=oct for @vals; dd @vals; # (10, 20, 13, 15, 19)