Perl

10桁・13桁のISBNを相互に変換するPerlワンライナー

ISBN(世界的に使われている書籍の識別番号)には、10桁のものと13桁のものがあります。http://ja.wikipedia.org/wiki/ISBN仕事でISBNを相互に変換するプログラムが必要になったのですが、CPANモジュール(Business::ISBN)を使うほどの処理でもないし、単純…

Jedit X で Markdown(とついでにPOD)

Markdownとは? Markdownとは「軽量マークアップ言語の1つ」で、簡単な記法で書いたテキストをHTMLに変換してくれる仕組みです。Wikiや「はてな記法」みたいなものですね。 Markdown - Wikipedia blog::2310 > Markdown文法の全訳 「Markdown」というものが…

Jedit X で ZenCoding

愛用のテキストエディタ「Jedit X」でZen Codingができないものかと探ってみました。 Zen Codingとは? Zen Codingについては、以下が参考になります。 知らない人は損してる?コーディングが3倍速くなるZen-Codingを導入してみた - EC studio デザインブロ…

Cache::FileCache の purge と Purge

Cache::FileCache を使っていて、期限切れキャッシュのファイルが削除されなくてはまりました。この記事 を参考にして Purge() していたのですが、どうやら Cache::FileCache には purge と Purge があるようなのです。上の記事のコメントを見て知りました。…

疑問:mod_perl と 後置 if と my

#!/usr/bin/perl use strict; use warnings; { my $flg; { my $cnt = 1 if ( $flg ); $cnt++; print "Content-type: text/plain\n\n"; print join( ', ', $cnt, $$, \$cnt ); } } 1; 上記のような CGI を mod_perl(ModPerl::Registry)上で動かすと、Apache…

Text::MicroTemplate と Template-Toolkit のベンチマーク

Perlの軽量フレームワーク(MENTA や NanoA)から生まれた Text::MicroTemplateと、ご存じ Template-Toolkit の比較のため、ベンチマークしてみました。参考までに、こちらも有名どころの HTML::Template も入れてみました。 結果 Benchmark: timing 5000 it…

Cache::File と Cache::FileCache の比較

とある仕事でファイルキャッシュを使う機会があったので、似た名前、ほぼ同じ機能の Cache::File と Cache::FileCache をベンチマークしてみました。導入障壁という意味でも、より依存するPerlモジュールの少ない Cache::FileCache に軍配が上がりました。 …

Automater で ドロップレット

Mac OS X Tiger から搭載されたAutomatorは、ShellスクリプトやPerlをドロップレットにできます。UNIXコマンドやらPerlというものを知らないデザイナなどにバッチスクリプトを作ってあげるときなんかに重宝しています。ライブラリ:「Automator」、アクショ…

コードを晒してみる その2 DateTime::Simple

日付や時間を扱うPerlモジュールはたくさんあります。DateTime や Date::Simple、Date::Manip、Date::Calc といったところが有名どころだと思います。私の場合、Perlモジュールがインストールできない環境(ホスティングだったり、サーバ管理者がうるさくて…

コードを晒してみる - HTML::FillInForm::PurePerl

数々の有名人の方々が、コードは晒すべきだとおっしゃっているので、私も遅ればせながら、自作のPerlモジュールを晒してみる気になりました。でも、CPANにではありません・・・。HTML::FillInForm::PurePerl - Pure Perl, regular expression based HTML::Fi…

日本語的にソートする

例えば、「Apple」「Orange」「みかん」「イチゴ」をこの順番で並べたい時、普通にソートしたのでは、「Orange」「みかん」「イチゴ」「Apple」となる。これを、もっと日本語的にソートする。ついでに処理速度を鑑みて、シュワルツ・ソートしてみ…

Unicode で lc() uc() が遅い

use encoding したPerlスクリプトを組んでいて、lc()を使うと妙に実行速度が遅くなるのに気が付いたので、ベンチマークとってみました。ちなみに、perl 5.8.6 です。 use strict; use encoding 'utf8'; use Benchmark; my $word = join( '', ( 'ABCDEF…

fork で Bus error

大量のIPアドレスからホスト名を求めたかったのですが、どうも gethostbyaddr が alarmで割り込んでもその通りにならず時間がかかるので、forkして並行処理しようと考えました。で、以下のように書いてみました。 my %working_pids = (); # 子のPIDを格納 lo…

配列の配列 vs. 連想配列

Perlで、ある対となる二つの値を単に保存しておきたいと思った時、配列の配列を作るのと連想配列(ハッシュ)を作るのではどっちが効率がいいだろう、とふと思ったので、ベンチマークしてみた。予想では、ハッシュ化する処理があるから、連想配列の方が遅い…

Net::Nslookup

Perlモジュール Net::Nslookup をCPAN から Mac OS X Tiger にインストールしようとしたところ、 t/nslookup.....ok 1/2 # Failed test 'localhost => ::1' # at t/nslookup.t line 49. # Looks like you failed 1 test of 2. t/nslookup.....dubious Test r…

XML関連モジュールのまとめ

仕事でXMLやRSSを処理する機会がありそうなので、XML関連のPerlモジュールを調べていました。どうやらXML::Simpleは遅いらしいです。コンパイル済みのバイナリである expat(XML::Parser)を使っているはずなのに、なんででしょうね。正規表現の方が速い理由…

XML::Parser のインストール

Mac OS X Tiger に Perlモジュール XML::Parser をインストールした時のメモです。XML::Parserは、expat という XML Parser を利用しますので、expatを先にインストールしておく必要があります。CPANからそのままインストールしようとしても、うまく行きませ…