use strict; use warnings; use feature qw( say ); use Scalar::Util qw( looks_like_number ); my $i = 0x00000019; my $s = '0x00000019'; say $i; say $s; say '---'; say looks_like_number($i) ? 'yes' : 'no'; say looks_like_number($s) ? 'yes' : 'no'; say '---'; say 0+$i; say 0+$s; say '---'; say $i =~ /^0/ ? oct($i) : $i; say $s =~ /^0/ ? oct($s) : $s; #### 25 0x00000019 --- yes no --- 25 Argument "0x00000019" isn't numeric in addition (+) at x.pl line 21. 0 --- 25 25 #### pack('C', hex($gBuf{$bName}[$i]))