CPAN 長いネームスペース大会 - にぽたん研究所

February 17, 2009

CPAN 長いネームスペース大会

livedoor clipHatena::Bookmarkdel.icio.us
FormValidator::Simple::Plugin::Japanese の依存ライブラリを減らしつつ perl5.8 的な Unicode 使用スタイルにして高速化をはかるパッチ - TokuLog 改めB日記」 あたりに関連して、某 IRC にて…
19:23 >nipotan< FormValidator::Simple::Plugin::Japanese は、
19:24 >nipotan< Number::Phone::JP フンフンまわりが重いような希ガス
19:24 >nipotan< つか、U::RD にしても、N::P::J にしても俺じゃねぇか
19:24 <hid*******> w
19:26 <Yap***> www
19:27 >nipotan< FormValidator::Simple::Plugin::Number::Phone::JP でしたっけ
19:27 >nipotan< すっごい長い名前w
19:27 <kan**********> www
19:29 <hid*******> CPANで長いネームスペース大会でベスト10候補ですね
19:29 <tok***********> いやー
19:29 <tok***********> 本当に長いのはもっともっと長かった気がする
19:30 <tok***********> Acme に死ぬほど長いのがあったような
19:30 <tok***********> Acme::Super::Hyper::Very::Long::Long::Module::Name.pm みたいな
19:30 <ots****> Acme::JugemJugemGogouno... かとおもった
19:30 <hid*******> w
ということで、何が長いのか、ホントにベスト 10 候補なのか、調べてみたよ
(2009 年 2 月 17 日現在)

コード:
#!perl

use strict;
use warnings;
use CPAN::Config;
use IO::Uncompress::Gunzip qw($GunzipError);
use constant PRINT_BEST => 10;

my $package_file =
    sprintf "%s/modules/02packages.details.txt.gz",
        $CPAN::Config->{keep_source_where};

my %ranking = ();

my $z = IO::Uncompress::Gunzip->new($package_file) or die "$GunzipError\n";
while (my $line = $z->getline) {
    my($package) = split /\s+/, $line, 2;
    my $length = length $package;
    $ranking{$length} ||= [];
    push @{$ranking{$length}}, $package;
}
$z->close;

my $number = 1;
my $rank;

for my $length (sort { $b <=> $a } keys %ranking) {
    $rank = $number;
    for my $package (sort @{$ranking{$length}}) {
        printf "%2d: %d bytes: %s\n", $rank, $length, $package;
        ++$number;
    }
    last if $number >= PRINT_BEST();
}
で、結果はこうなったよ。

順位文字数ネームスペース
196eBay::API::XML::Call::AddTransactionConfirmationItem::AddTransactionConfirmationItemResponseType
295eBay::API::XML::Call::AddTransactionConfirmationItem::AddTransactionConfirmationItemRequestType
394Perl::Critic::Policy::ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions
492eBay::API::XML::Call::AddMemberMessageAAQToPartner::AddMemberMessageAAQToPartnerResponseType
492eBay::API::XML::Call::AddMemberMessagesAAQToBidder::AddMemberMessagesAAQToBidderResponseType
492eBay::API::XML::Call::GetLiveAuctionCatalogDetails::GetLiveAuctionCatalogDetailsResponseType
492eBay::API::XML::Call::GetStoreCategoryUpdateStatus::GetStoreCategoryUpdateStatusResponseType
492eBay::API::XML::Call::ValidateTestUserRegistration::ValidateTestUserRegistrationResponseType
991eBay::API::XML::Call::AddMemberMessageAAQToPartner::AddMemberMessageAAQToPartnerRequestType
991eBay::API::XML::Call::AddMemberMessagesAAQToBidder::AddMemberMessagesAAQToBidderRequestType
991eBay::API::XML::Call::GetLiveAuctionCatalogDetails::GetLiveAuctionCatalogDetailsRequestType
991eBay::API::XML::Call::GetStoreCategoryUpdateStatus::GetStoreCategoryUpdateStatusRequestType
991eBay::API::XML::Call::ValidateTestUserRegistration::ValidateTestUserRegistrationRequestType


現実は全然長すぎるよ。。

ちなみに、あまりにつまらない結果なので、10 位までしか出してないですが、1,000 位まで出した (ちなみに 56 文字で 906 位タイというのが 98 個あったので、1,000 位までの総数は 1,003 個) 場合、
  • eBay::API::XML:: から始まるものが 498 個
  • Perl::Critic:: から始まるものが 127 個
  • perfSONAR_PS::Datatypes::v2_0:: から始まるものが 55 個
  • UMMF::UML::MetaModel:: から始まるものが 46 個
  • UMMF::UML_1_5:: から始まるものが 45 個
と目立ちました。
そして、予想に反して、Acme:: から始まるものは、1,000 位までの中で 0 個でした。

さぁ、すごい長くて素敵な名前を考えて、トップに躍り出るチャンスだよ!
みんな頑張ってね!
俺は空気読む子だから頑張らないよ!

nipotan at 20:38 | Comments(0) | TrackBack(2) | tech 
livedoor clipHatena::Bookmarkdel.icio.us

Trackback URL for this entry

Trackbacks

1. perl - package と stash を理解する  [ 404 Blog Not Found ]   February 18, 2009 01:13
以下に触発されて。 CPAN 長いネームスペース大会 - にぽたん研究所 CPAN 階層の深いモジュール王選手権 - id:kazuhookuのメモ置き場
2. CPAN よく使われるネーム王選手権  [ 日曜プログラマのそゞろ事 ]   February 22, 2009 00:11
名前付けに困っていたところに、CPAN 長いネームスペース大会 - にぽたん研究...

Post a comment

Name:
URL:
  Remember info?: Rate: Face    Star