Perl
関西.pm 新年会
Scrapcode@はてなダイアリーでも紹介されているように、13日の土曜日は、関西.pm の新年会だった。2次会からの参加だったが、鍋(ピントがぼけてしまったが写真は材料)をつつきながら Perl について語り合ったり、おしゃれなカフェで 関西.pm の今後について語り合ったりした。
PDFJ などで有名な中島さんも来られていたので、某業務で保留になっている PDFJ の unicode 対応について確認する。きちんと対応しているらしい。やはり僕の作ったアプリの作りかたが悪かったのだろうか。見えないのはクライアントアプリが原因では無いだろうかとの事であった。明日あたりちょっと調べてみようと思う。
Class::Accessor で setter, getter を自動生成
しばらく Perl を使っていなかった(ちょこっとしたツールを作るぐらい)のだが、ある目的のために Perl を勉強し直す事にした。これから数日は Perl ネタが続くおそれがある ;-)
で、昨晩に色々と見ていてたどり着いたのが、Perl の Class::Accessor モジュールである。これは、オブジェクトの属性を設定したり(setter) 取り出したり(getter)する Accessor をいちいち作らなくても済むようにできる。
関西.pm の集まりに先週行ってきました
そういえば、Kansai Perl Mongersの集まりに先週の日曜日行って来たのでした。
本当は予定が入っていたのですが、前からPDFJ の 中島 靖さんにお会いしたいと思っていたので、予定をキャンセルして参加しました。
中島さんは想像していた感じと違っていました。後日同僚に話してみると、その彼が想像していたのはぴったりだったので、僕に観察力が無かっただけのようです。
system 関数の出力をファイルにリダイレクト
Perl Cookbook の 19.6. Executing Commands Without Shell Escapes によると、system() にはコマンド文字列をリスト形式で渡したほうが安全だとある。私が人に教えるときも、system() を使うときにはリスト形式を使うよう
強く勧めている。
ところが先日、問題が発覚した。system() の中で標準出力をファイルにリダイレクトしたいのだが、リスト形式だとうまくいかないというのだ。
言われて直ぐにちょこっと調べてみたのだが、確かにうまくいかない。
system("ls -l > /tmp/ls.log");
ということを、リスト形式で実現したいと言うのだが。
system("ls", "-l", ">", "/tmp/ls.log");
なんてやり方でやると ls: >: No such file or directory
と言って怒られてしまう。もちろん、これにはちゃんとした理由があって、system にリスト形式の引数を渡すと SHELLを呼び出さないからである。(> を使ったファイルのリダイレクトは SHELLの機能だ。)
とりあえず週末に調べてくるからと言って、時間を貰って調べる事にした。
CGI にセッション機能を。Walrus::Session::Lite
Perl で記述する CGI にセッションの仕組みを組み込みたくて色々探してみた。で、面白そうなモジュールを発見。Walrus::Session::Lite というモジュールだ。
セッションデータ(ファイルやリレーショナルデータベースに格納)を tie を使ってハッシュ変数に割り当ててしまうところが perl らしくて面白い。同じような処理をする為の CGI::Session モジュールと比較してみるとよくわかる。
Spreadsheet::WriteExcel - Perl で Excel ファイルを出力
Spreadsheet::WriteExcel という perl 用のモジュールがある。
昨日、会社経営している友人に出会い、色々と話をしたのだが、「Webシステムで Excel出力できたら便利やのにな」と言うので、ちょっと調べてあげることになった。もちろん、Perl で Excel ファイルを生成するライブラリの存在は知っていたので、あとは以下の点を調べる約束になった。
- 友人が利用しているレンタルサーバにライブラリをインストールできるかどうか?
サーバ管理者がインストールしてくれるならよいが、そうでなければ FTPでインストールできる(C言語で書かれていない)か
- 日本語が正しく出力できるかどうか?
いつものように、FreeBSD の ports を使ってインストールする事にした。The CPAN Search Site にある、Spreadsheet::WriteExcel のバージョンは 2.11 であった。一方、ports にある Spreadsheet::WriteExcel のバージョンは 2.04である。まあそんなに違いは無いだろうと考えて ports からインストールした。
Atami(熱海) Application Server
以前この Blog で紹介した Apache モジュール mod_blosxom の作者である 小山浩之さんが、またまたおもろい事をやってくれた。
Net-AJP13改めAtami(熱海) Application Server である。これはようするに、PerlでTomcatのフリをしよう。Net::AJP13の巻(最初のリリース時の小山さんの Blog) というタイトルからわかるように、Java で書かれた Webアプリケーションサーバ Tomcat を、Perl で置き換えようというのだ。
mod_blosxom もそうだが、こういうお笑いのようなノリ (ごめんなさい) は大好きだ。彼のサイトである http://module.jp/ の このサイト MODULE.JP について には以下のように書かれている。
このサイトはApache module APIを利用したApacheモジュールの開発や変態的なPerlモジュールの開発といった、誰が嬉しいんだか良くわからない技術的な情報を扱います。
ネタは誰も思いつかないような 変わった ものだが、中身は結構まともである。
ということでインストールしてみた。
国産CMS てんぷら
てんぷら という CMS を発見。
『てんぷら』は、シンプルなCGI/Perlのみで構築開発されたウェブシステムです。
(一部略)
すでにCGIの設置経験があれば誰でも簡単に利用することができ、カスタマイズも容易です。案の定、CGIが動けば、どこでも動作し、より低コストなサイト構築を実現できます。
ライセンスは、GPL とコマーシャルライセンスの2通りである。ソースコードを公開したくなければお金を払えばよい。(某企業のように恥ずかしい思いをしなくても済む)
Perlを使いデータベースを必要としない事から、PHP, MySQL が利用可能な(少し高額な)レンタルサーバを借りなくても、ISPが提供する個人向けホームページスペースを使えるだろう。個人(特に、個人で商売をされているかた) がどんどん使えばよいのではないだろうか?
『てんぷら』には、お馴染みの掲示板、ショップ、データベースや会員管理、管理画面、メール連携・・等と約300を超える機能群が詰め込まれています。
それらを自在に組み合わせて貴方だけのオリジナルサイトを作ることができます。
まだインストールしていないが、300 を超える機能というのは魅力的だ。
[リンク] メールアドレスの正規表現
Perl を使ってメールアドレスが正しいか確認する為の方法を探していたら、すごいページを見つけてしまった。
メールアドレスの正規表現(Perlメモ)というページだ。とにかく、この正規表現を見て欲しい。これでも、ネストしたコメントをあきらめた
との事。
但し、この正規表現は既に obsolete となった、RFC821, RFC822にかかれているルールを元にしているようで、使い物になるかどうかは良くわからなかった。