#!/usr/bin/env perl
# $Id: sort-domain,v 1.1 2015/03/04 00:25:55 friedman Exp $

# Sort email addresses or domain names by (sub)domain.
# Understands typical address comments ("name <addr>" and "addr (name)").

use strict;

my %tbl = map { my $addr = $1 if /<(.*?)>/ || /^(\S+)\s+\(/ || /^(\S+)$/;
                my $key = join (".", reverse split (/[.\@]/, lc $addr));
                $key => $_ ;
              } <> ;

map { print $tbl{$_} } sort keys %tbl;

# eof
