Hopefully a more complete and self contained example for haukex explanation:
#!/usr/bin/env perl use v5.10; use strict; use warnings; use Math::BigInt; use constant offset => Math::BigInt->new('0x500000000'); while (my $line1 = <DATA>) { # if addr 0x10000 written like 0x010000 then # 0x(?:[[:xdigit:]]{2})+)\b may validate memory address my ($addr) = $line1 =~ /addr:(0x[[:xdigit:]]+)\b/; # print "addr is $addr\n"; if (defined $addr) { my $new_addr = sprintf "0x%x", hex($addr) + offset; if ($line1 =~ s/ \baddr: \K $addr (?=\s+qospri:) /$new_addr/x ) { print $line1; } else { print STDERR "unchanged\n"; print $line1; } } } __DATA__ chn:req mon:orig cmd:SDP_CMD_WRSIZEDFULL tag:0x3b9aca01 addr:0xdf7780 +qospri:0 len:0xf
Update: requirement for even number of digits removed thanks to explanation from AnamalousMonk.
In reply to Re: Performing addition on hex value extracted from a string
by mr_ron
in thread Performing addition on hex value extracted from a string
by syedasadali95
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |