#!/usr/bin/perl -w $abbv = "BKMGTP"; $mult = 1024; $i = 0; $n{$_} = $i++ for split //, $abbv; print map { $_->[1] } sort { $a->[0] <=> $b->[0] } map { die unless m/^([\d.]+)([$abbv])?/; [ $2 ? $1 * $mult ** $n{$2} : $1, $_ ] } <>;