Функция hex
просто интерпретирует строку как число в шестнадцатеричной форме. Кроме того, это просто число, и его оригинальное представление не имеет значения.
Когда вы печатаете число, Perl использует его внутренний формат (%g
), чтобы показать его. Это нормальное десятичное число с плавающей запятой.
Если вы хотите вывести число в виде, отличном от внутреннего формата Perl, используйте printf
и соответствующий спецификатор:
printf '%x', $number;
Вы, вероятно, хотите что-то вроде:
my $tmp1 = '0018';
print "tmp1 is $tmp1\n";
my $tmp1_hex = hex( $tmp1 );
printf "tmp1_hex is %x\n", $tmp1_hex;
Обратите внимание, что побитовые операторы не нуждаются в преобразовании числа в какую-либо конкретную базу. Число - это одно и то же число, независимо от того, как оно отображается.