Perl имеет оператор hex
, который выполняет логику декодирования для вас.
hex EXPR
hex
Интерпретирует EXPR как шестнадцатеричную строку и возвращает соответствующее значение.(Для преобразования строк, которые могут начинаться с 0
, 0x
или 0b
, см. oct
.) Если EXPR опущен, используется $_
.
print hex '0xAf'; # prints '175'
print hex 'aF'; # same
Помните, что стандартное поведение split
разбивает строку на разделители пробелов, например,
$ perl -le '$_ = "a b c"; print for split'
a
b
c
Для каждой строки ввода отделяйте еев шестнадцатеричные значения, преобразуйте значения в числа и push
их в массив для последующей обработки.
#! /usr/bin/perl
use warnings;
use strict;
my @values;
while (<>) {
push @values => map hex($_), split;
}
# for example
my $sum = 0;
$sum += $_ for @values;
print $sum, "\n";
Пример выполнения:
$ ./sumhex mtanish-input
4196