in reply to Performing addition on hex value extracted from a string
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.
Ron
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Performing addition on hex value extracted from a string
by AnomalousMonk (Archbishop) on Feb 21, 2019 at 19:12 UTC |
In Section
Seekers of Perl Wisdom