in reply to Performing addition on hex value extracted from a string
#!usr/bin/perl unlink("ccix.sdp_trc");
That should probably be:
#!/usr/bin/perl use warnings; use strict; unlink("ccix.sdp_trc");
I want to extract the hexadecimal addr:0xdf7780 value, add 0x500000000 to it and then replace the result in the same string.
If the addr:0xdf7780 value is always six digits long then you can do a simple text substitution:
$ perl -le'$x = "hexadecimal addr:0xdf7780 value"; print $x; $x =~ s/ +addr:0x \K (?= [[:xdigit:]]+ ) /500/x; print $x' hexadecimal addr:0xdf7780 value hexadecimal addr:0x500df7780 value
If the addr:0xdf7780 value is always less than nine digits long then you can do:
$ perl -le'$x = "hexadecimal addr:0xdf7780 value"; print $x; $x =~ s/ +addr:0x \K ( [[:xdigit:]]+ ) / $y = "500000000"; $l = length $1; subs +tr $y, -$l, $l, $1; $y /xe; print $x' hexadecimal addr:0xdf7780 value hexadecimal addr:0x500df7780 value
Otherwise, this will work:
$ perl -le'$x = "hexadecimal addr:0xdf7780 value"; print $x; $x =~ s/ +addr:0x \K ( [[:xdigit:]]+ ) / sprintf "%x", hex( $1 ) + 0x500000000 +/xe; print $x' hexadecimal addr:0xdf7780 value hexadecimal addr:0x500df7780 value
|
|---|