use strict; use warnings; no warnings 'numeric'; my %suffix = (K => 1, M => 1e3, G => 1e6, T => 1e9); # or alternative values: # my %suffix = (K => 1, M => 1024, G => 1024 ** 2, T => 1024 ** 3); while() { my($col1, $col2) = split; print "$col1 - $col2 = "; my $suff1 = substr($col1, -1, 1); my $suff2 = substr($col2, -1, 1); if($suffix{$suff1} < $suffix{$suff2}) { # Alter $col2 and $suff2 $col2 *= $suffix{$suff2} / $suffix{$suff1}; $suff2 = $suff1; } elsif($suffix{$suff1} > $suffix{$suff2}) { # Alter $col1 - no need to alter $suff1 $col1 *= $suffix{$suff1} / $suffix{$suff2}; } $col1 -= $col2; print "${col1}$suff2\n"; } __DATA__ 324K 324K 440K 533K 23T 224G 42G 42G 1.9T 709G 294K 294K 684K 684K 492K 492K 62M 64M 48K 41M 34M 433K 317K 812K