#!/usr/bin/perl print map { $_->[0] } sort { @a_f = @$a; @b_f = @$b; $a_f[1] <=> $b_f[1] || $a_f[2] <=> $b_f[2] || $a_f[3] <=> $b_f[3] || $a_f[4] <=> $b_f[4] } map { if ($_ =~ /(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/) { [$_, $1, $2, $3, $4]; } else { [$_, 0, 0, 0, 0]; } } <> ;