in reply to Subtract 2 hexadecimal numbers

Read Writeup Formatting Tips and edit your post using "code" tags around your text file contents. We can't tell how many lines are in your file. This should get you started:
use warnings; use strict; while (<DATA>) { if (/(\w+)=\w+ (\w+)=/) { my $diff = hex($2) - hex($1); printf "0x%x %d\n", $diff, $diff; } } __DATA__ 0x405d75=inst1 0x405d7a=inst2

Replies are listed 'Best First'.
Re^2: Subtract 2 hexadecimal numbers
by samd (Novice) on Feb 20, 2014 at 23:19 UTC

    This is the piece of code that i wrote to extract the above mentioned hexadecimal values and now i want to subtract the $valu2 with $value1 and print it in the same output file F2. I am not sure how to subtract these 2 values and print the result in hexadecimal and also in integer

    #!usr/bin/perl open (FILE1, "<file_hex.txt") or die "can't read the file"; open (FILE2, ">output_log.txt") or die "cant write into the file"; while (<FILE1>) { if($_ =~ (/(^\=\>\s+)(0x[0-9a-f]+){1,10}(.*)/)) { $value1= $2; print FILE2 $value1."=inst1 \n"; } elsif($_ =~ (/(^\s+)(0x[0-9a-f]+){1,10}(.*)/)) { $value2=$2; print FILE2 $value2."=inst2 \n"; } } close (FILE1); close (FILE2);

    Thanks

      The basic technique for extraction and substraction was shown by toolic. I don't know why you haven't used this nor why you seem to be asking exactly the same question in response to his reply: he's shown you how to extract the data, do the subtraction and output the result in the formats requested. Perhaps you should provide expected output to clarify your question.

      Now that we can see the format of your input data, I can show you how to read pairs of lines.

      #!/usr/bin/env perl use strict; use warnings; { local $/ = "inst2\n"; while (<DATA>) { /^(\w+)=\w+\s+(\w+)/; printf "%#x %1\$d\n" => hex($2) - hex $1; } } __DATA__ 0x405d75=inst1 0x405d7a=inst2 0x4035f7=inst1 0x4035f8=inst2 0x4035f8=inst1 0x4035fb=inst2

      Output:

      0x5 5 0x1 1 0x3 3

      -- Ken