use 5.010; use strict; use warnings; my %ips; while (<$in_fh>) { push @{ $ips{"$1.$2.$3"} }, "$1.$2.$3.$4" if /^(\d+)\.(\d+)\.(\d+)\.(\d+)/; } say $ips{$_}[rand @{$ips{$_}}] for sort keys %ips;