@sorted_by_ip = sort { my @a = $a->{ip} =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)/; my @b = $b->{ip} =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)/; $a[0] <=> $b[0] || $a[1] <=> $b[1] || $a[2] <=> $b[2] || $a[3] <=> $b[3] || $a->{date} cmp $b->{date} || $a->{time} cmp $b->{time} } @ip_date_time;