これまでサービスで使うCPANモジュールの管理と言えばrpm/debパッケージが主流だと思いますが、最近ではperlbrewで使いたいバージョンのperlをインストールすることもあり、rpm/debでは対応できなくなってきています。 perlbrewのperlに対してプロジェクトが依存しているCPANモジュールを入れる際、 $ perlbrew switch perl-5.12.3 $ cd /path/to/MyProj $ perl Makefile.PL $ cpanm --installdeps . などと cpanm —installdeps が使えます。 しかし、これではサーバを新規セットアップするたびに、最新のモジュールが入ることになりサーバ間でモジュールのバージョンの差異が生まれる可能性があります。 そこで対応策として考えられるのが開発サーバで—installdepsを実行
CPAN::Mini で CPAN のミラーをローカルに DECON で話してきたネタですがちょっと詳しく。 飛行機やら電車の中やらでオフラインハックするときに(たまに)問題になるのが CPAN モジュールの不足です。「あぁ、このマシンにはあのモジュール入ってねぇ~」とかでハックが滞るのは萎えます。というわけで minicpan。CPAN::Mini というモジュールで、CPAN モジュールの最新版だけを持ってきてミラーをつくることができます。 導入は簡単で、CPAN から install CPAN::Mini すると minicpan というコマンドが付属してきます。コマンドラインから使うには、 > minicpan -r http://ftp.funet.fi/pub/languages/perl/CPAN/ -l ~/minicpan とかすれば finet から HTTP で同期で
最近サーバーを巷で噂の DreamHost に乗り換えてみました。決めては価格が安かったことと SSH が使えたこと。ついでに Subversion も使えるのである程度自由がきく。 DreamHost は root になれない、deamon が扱えないとか規制はあるみたいですが、他は何でも出来そうです。とりあえず Emacs もインストールできました。Var.21 だと日本語周りで色々インストールしてあげないといけないので Var.22 を持ってくる方が作業が早いはず。Subversion も手間はかかるけど自分でインストールも出来そうですね。 Perl の場合は Perl 自体のバージョンとモジュールが使えるかってのが重要なんですが、自前でインストールすれば問題なく使えるみたいです。っと言うことでみんな大好き CPAN を使えるように設定してみました。 1. Stable の Perl
それpsで出来るよ、、、って結論が先に出るんですけどもw 敢えてCPANモジュールでやってみようの巻。 Proc::ProcessTable これが便利。 $ perl -MProc::ProcessTable -e 'print join("\n", Proc::ProcessTable->new->fields);'こんなワンライナーでProc::ProcessTable::Processオブジェクトがサポートしているフィールド一覧を調べる事が出来ます。 例えば特定のプロセスが立ち上がっているかどうか調べたい時、 #!/usr/bin/perl use strict; use warnings; use Proc::ProcessTable; my $fname = "mysqld"; my $t = Proc::ProcessTable->new; if (grep { $_->fn
2006年11月13日17:45 カテゴリLightweight Languages perl - HTTP::Daemonできみにも書けるWebサーバ これにインスパイヤされて。 Python と Twisted できみにも書ける Web サーバ 誰でも比較的簡単に Web サーバを書くことを可能にするのが Python と Twisted というフレームワークの組合せです。Pure Perlで書かれたWeb Serverはそれこそ山ほどあるのですが、実はLWPにもサーバーを簡単に実装するModuleが用意されていて、それがHTTP::Daemonです。 例えば、ブラウザのリクエストをおうむ返しにするサーバーは、以下のとおりとなります。 #!/usr/local/bin/perl -T use strict; use warnings; use HTTP::Daemon; use HTT
弊社オススメの CPAN モジュールたちです。 Module::Install(by audreyt) Test::Base(by ingy++) Path::Class Plagger(miyagawa and Plagger AUTHORS) Xango(dmaki) MIME::Lite メール送信モジュール Mail::Address::MobileJp(miyagawa) モバイルのメアドかどうかの判定モジュール HTTP::MobileAgent(id:clouder) モバイルのサイトつくるなら、これがないと。 Regexp::Assemble Template テンプレートエンジンはこれがいちばんかな。 DateTime(Dave Rolsky) 日時を扱うなら最近はこれ YAML(ingy) PadWalker? DBIx::Class::Schema List::Uti
ステキな正規表現 $RE{URI}{HTTP} を使うと、テキストからURIをさくっと抜き出したりaタグで囲ったりできるんですが、フラグメント(aタグname属性値の#topみたいなの)にマッチしないんす。 なぜか? URIについてのRFCにはRFC 3986があります。で、RFC 3986はRFC 2396をobsoletesしてるんで、URIについては最新の仕様が3986で、1コ前の仕様が2396ということになります。 で、RFC 2396ではURIのBNFに含まれていなかったfragmentが、3986では含まれるようになったんす。 おそらく、Regexp::Common::URI::httpはRFC 2396の時代に作られたため、$RE{URI}{HTTP}がフラグメントにマッチしないんだと思います。 $RE{URI}{HTTP}{fragment=>1}でフラグメントにもマッチす
NAME Regexp::Assemble - Assemble multiple Regular Expressions into a single RE SYNOPSIS use Regexp::Assemble; my $ra = Regexp::Assemble->new; $ra->add( 'ab+c' ); $ra->add( 'ab+-' ); $ra->add( 'a\w\d+' ); $ra->add( 'a\d+' ); print $ra->re; # prints a(?:\w?\d+|b+[-c]) DESCRIPTION Regexp::Assemble takes an arbitrary number of regular expressions and assembles them into a single regular expression (or
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く