#!/usr/bin/perl use strict; use warnings; use Regexp::Common qw(net); use String::Util qw(trim); my %seen_addrs; while (<>) { /$RE{net}{IPv4}{-keep}/ and $seen_addrs{ trim($1) }++; /$RE{net}{IPv6}{-sep => ':'}{-style => 'HeX'}{-keep}/ and $seen_addrs{ trim($1) }++; /$RE{net}{MAC}{-keep}/ and $seen_addrs{ trim($1) }++; } for my $addr ( sort keys %seen_addrs ) { print $addr, qq{\n}; }