in reply to Re: Subtract 2 hexadecimal numbers
in thread Subtract 2 hexadecimal numbers

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

Replies are listed 'Best First'.
Re^3: Subtract 2 hexadecimal numbers
by kcott (Archbishop) on Feb 21, 2014 at 08:18 UTC

    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