#!/usr/bin/perl use warnings; use strict; my $filename = "test"; sub ipToInt { my $ip = shift; my $sum = 0; # Splitting at dots is tricky: my @arr = split('\.', $ip); my $i; foreach $i (@arr) { $sum = $sum * 256 + $i; } return $sum; } sub getIPasNumber { my $l = shift; chomp($l); my @a = split(" ", $l); return ipToInt($a[2]); } my $fh; open($fh, "<", $filename) or die; my @a = <$fh>; close $fh; my %h; my $i; foreach $i (@a) { chomp($i); my $num = getIPasNumber($i); $h{$num} = $i; } foreach $i (sort {$b <=> $a} (keys(%h))) { print "$h{$i}\n"; }