The string 0x00000019 is indeed not a number. The integer produced by Perl code 0x00000019 is a number (25), but the string is being passed to pack, not a Perl parser. hex and oct can convert such strings to numbers.
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
So you want
pack('C', hex($gBuf{$bName}[$i]))
In reply to Re: Creating a binary file problem
by ikegami
in thread Creating a binary file problem
by gibsonca
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |