ドメイン名のソート順

Firefox のメニューから、[ツール] → [オプション] を選ぶと、Cookie の設定やアドオンの設定など、サイトごとに設定値を決められる設定項目がある。


そういう項目を変更しようとするときの画面での、ドメイン名のソート順が気に入らない。単純に文字列のソートより、より上位のレベルのドメイン名でソートしてほしいのだ。

#! /usr/bin/perl

# domain_sort.pl

my @domain = qw (
    www.microsoft.com
    www.microsoft.co.jp

    d.hatena.ne.jp
    f.hatena.ne.jp
    h.hatena.ne.jp
    www.hatena.ne.jp

    mail.google.com
    docs.google.com

    a.foo.edu
    b.foo.edu
    c.foo.edu
    www.foo.edu

    americanexpress.fr
);

$\ = "\n";
print "-------- normal sort --------";
print for sort @domain;

print "-------- domain sort --------";
print for sort domain_sort @domain;

sub domain_sort {
        my $reverse_a = join '.', reverse split /\./, $a;
        my $reverse_b = join '.', reverse split /\./, $b;

        return $reverse_a cmp $reverse_b;
}


実行結果

%perl domain_sort.pl.pl
-------- normal sort --------
a.foo.edu
americanexpress.fr
b.foo.edu
c.foo.edu
d.hatena.ne.jp
docs.google.com
f.hatena.ne.jp
h.hatena.ne.jp
mail.google.com
www.foo.edu
www.hatena.ne.jp
www.microsoft.co.jp
www.microsoft.com
-------- domain sort --------
docs.google.com
mail.google.com
www.microsoft.com
a.foo.edu
b.foo.edu
c.foo.edu
www.foo.edu
americanexpress.fr
www.microsoft.co.jp
d.hatena.ne.jp
f.hatena.ne.jp
h.hatena.ne.jp
www.hatena.ne.jp
%