#!/usr/bin/perl -w use strict; use Data::Dumper; my @lines; while (<>) { chomp; push @lines, [unabbrev($_), $_]; # print "$_: ", unabbrev($_), "\n"; } # print Dumper \@lines; for my $line (reverse sort { return $a->[0] <=> $b->[0] } @lines) { print $line->[1], "\n"; } sub unabbrev { my $val = shift; if ($val =~ m/^\s*(\d+(\.\d+)?)([KMGB]?)/) { if ($3 eq 'K') { $val = $1 * 1000; } elsif ($3 eq 'M') { $val = $1 * 1000000; } elsif ($3 eq 'G') { $val = $1 * 1000000000; } else { # B or nothing $val = $1; } } return $val; }