perl
ものすごく久し振りにPHPでコードを書く必要性に迫られているのだけど、Perlに慣れ過ぎていて些細なシンタックスで躓きまくり。 sub {} ではなく function() {} elsif ではなく elseif splitの分割パターンはquoteで与える(正規表現が必要ないならexplodeを…
すぐ名前を忘れてしまうのでメモ。Perlではオブジェクトのメソッド呼び出しにおいて、暗黙の第一引数として呼び出し元のオブジェクト情報が渡る。これをinvocantと呼ぶ。 sub method { my $self = shift; } invocantは上記のようにshiftで受け取るのが慣例。…
非常に時間のかかる処理をCGIから行う場合、ブラウザが応答待ちのまま固まったり、タイムアウトによって処理が中断してしまうといった問題がある。こういった場合、forkを使ってPerlプロセス自身を複製するという手法もあるが、問題の処理は外部プログラムに…
URIにアクセスできたけどエラーが返されたのか、そもそもアクセスできなかったのかを区別するのはどうすればいいのか、ということでちょっと悩まされた。 use LWP::UserAgent; my $ua = LWP::UserAgent->new; $ua->timeout(10); my $res = $ua->get($url); m…
sub func1 { my $self = shift; my $result = $self->func2; } sub func2 { my $self = shift; $self->check_wantarray; $self->dummy; } sub check_wantarray { my $self = shift; print defined(wantarray) ? (wantarray ? 'ARRAY' : 'SCALAR') : 'VOID'; …
EUC-JPのシングルバイト文字のうち、コントロールコードを除いたASCII文字は[\x20-\x7E]。これはそのまま数えれば問題ない。 my $n = ($str =~ tr/\x20-\x7f/\x20-\x7f/); 一方、EUC-JPの2バイト文字は [\x8E\xA1-\xFE][\xA1-\xFE](うち\x8E[\xA1-\xDF]は半…
時刻をきれいに文字列にしたい場合、POSIXモジュールにあるstrftime()を使うことが出来ます。覚えておいても損はないでしょう。こちらも標準装備。 404 Blog Not Found:勝手に添削 - Ajaxでデバッグしよう - @IT 標準モジュールで整形してくれるの存在した…
PHPならそのままget_class_methods()という関数があるんですが。あまりスマートじゃない気がしますけど、こんな感じでいけました。 no strict 'refs'; my @methods = grep { $_ !~ /::/ } keys %{"PackageName::"}; print join("\n", @methods); 実行された…
海外のmac環境Railsユーザに好評なTextmate。 Windows環境でも同じような(追いつき追い越せ?)センスでのエディタ開発が始まっているようです。 Windows Textmate!? - Intype Alpha 0.2.1: CakePHP のおいしい食べ方 という背景があるらしい、ソースエディ…
use CGI; my $q = new CGI; foreach my $key ($q->param) { print "$key : ".$q->param($key)."\n"; } ごく普通にnewするだけで何の工夫もなし。それだけで次のコマンドは期待通りに動作してくれる。 $ perl sample.pl "key1=Hello+World&key2=%a5%c6%a5%b9%…