在Perl中,如何将字符串中的多个十进制数转换为十六进制等效值?

use*_*369 3 perl printf

在Perl中,如何将文件行中的多个十进制数转换为十六进制等值?

我有代码将转换找到的最后一个数字,但保留先前的数字未转换,我想转换所有数字,而不仅仅是找到的最后一个数字:

if ($line =~ /[0-9]+/) {
   $loc = index($line,/\s+[0-9]+\s*/);
   $mybyte = substr($line,$loc);
   $newbyte = sprintf("%x\n", $mybyte);
   $newline = substr($line,0,$loc).$newbyte;
   print my_report $newline;
}
Run Code Online (Sandbox Code Playgroud)

ike*_*ami 5

$line =~ s/([0-9]+)/sprintf "%X", $1/eg;
Run Code Online (Sandbox Code Playgroud)