in reply to More elegant way than multiple "if"?

#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11109362 use warnings; my %suffix = qw( K 3 M 6 G 9 T 12 ); while( <DATA> ) { print s/(\S+)([TGMK])\s+(\S+)([TGMK])\K/ ' ' . ("$1e$suffix{$2}" - "$3e$suffix{$4}") /er =~ s/((000){1,4})$/ +{reverse %suffix}->{length $1} /er; } __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

Outputs:

324K 324K 0 440K 533K -93K 23T 224G 22776G 42G 42G 0 1.9T 709G 1191G 294K 294K 0 684K 684K 0 492K 492K 0 62M 64M -2M 48K 41M -40952K 34M 433K 33567K 317K 812K -495K