open(F, $ARGV[0]) or die "Couldn't open file\n"; print sort by_ip ; close(F); sub by_ip { my ($aip) = split /,/, $a; my ($bip) = split /,/, $b; my ($aa, $ab, $ac, $ad) = split /\./, $aip; my ($ba, $bb, $bc, $bd) = split /\./, $bip; return ($aa <=> $ba) || ($ab <=> $bb) || ($ac <=> $bc) || ($ad <=> $bd); } sub by_country { my ($ac) = (split /,/, $a)[2]; my ($bc) = (split /,/, $b)[2]; return ($ac cmp $bc); }