Lingua::JA::Romaji::Valid
Acme::JapaneseCPANAuthorsを補強するために書いたコードをまとめたもの。アルファベットで書かれたテキストの中からローマ字(あるいは日本人の名前)として正しそうなものを抽出するときに使う。実際の使用例はこんな感じ。
#!perl use strict; use warnings; use Acme::JapaneseCPANAuthors; use Lingua::JA::Romaji::Valid; use Parse::CPAN::Authors; use CPAN::Config; use File::Spec; my $cpan = Parse::CPAN::Authors->new( File::Spec->canonpath( $CPAN::Config->{keep_source_where}.'/../01mailrc.txt.gz' ) ); my $validator = Lingua::JA::Romaji::Valid->new('loose'); my @authors; foreach my $author ( $cpan->authors ) { my $name = $author->name or next; my $id = $author->pauseid; my $email = $author->email; # skip registered authors next if Acme::JapaneseCPANAuthors->id($id); # skip those who don't look like Japanese next unless $validator->as_fullname( $name ); # skip those who use unfamiliar mail addresses to us next unless $email =~ /\.(com|org|net|jp)$/i; push @authors, $author; } print "num of unregistered authors:" , (scalar @authors), "\n"; foreach my $author ( sort { $a->pauseid cmp $b->pauseid } @authors ) { my $id = $author->pauseid; my $name = $author->name; print qq{ $id => '$name'\n}; }
ちなみにParse::CPAN::AuthorsというのはCPANを立ち上げたときに読み込まれる作者データをごにょるもの。これを使うとsearch.cpan.orgとかをスクレーピングしなくてもCPAN Authors全員の情報を取得できる。同様のものにParse::CPAN::Packages、Parse::CPAN::Modlistというのもある。インストーラとかパッケージャを書く人は覚えておくとなにかと便利。