Perl

日本語メール送信

perl-users.jpのメールの送信 - モダンなPerl入門を手本にメール送信してみたらGMailで文字化けしたので添削。(あとでSVNにコミットするかなしました。) attributesにcharasetを指定して文字化け対策をしたら直った。 #!/usr/local/bin/perl use strict; u…

MacOS X 10.5のPerlのライブラリは古い。

家で使ってるMacを再インストールして、プロジェクトをSVNリポジトリからチェックアウト。 っで走らせてみたら、今まで動いてたはずのプロジェクトがメソッドがないって怒られてる。 単純に、ライブラリがサポートしなくなったのかと思ったけどCPANでドキュ…

MySQL5(MacPorts経由)とcpanのDBD::mysqlをインストール

Mac上でDBD::mysqlを入れるときにハマったのでメモ。 症状 MySQL5をMacPortsでインストールしたときに、cpanからDBD::mysqlがインストールできない。 原因 MacPortsのMySQL5のコマンドがmysql5とか、普通の名前と違う! 対処 以下のようにcpanでoを使うとい…

DBIx::Classで普通のSQL

別件で調べてたら分かったのでメモ。DBIx::Class使ってても普通のSQLが使える、 DBIx::Class::Storage::DBIを使えばできる。 my $schema = $c->model('Xxxxxx')->schema; my $dbh = $schema->storage->dbh; my $sth = $dbh->prepare("UPDATE files SET conte…

CatalystでURL最適化

Catalyst::DispatchType::Chainedを使うとスッキリしたURLで組める。似たような事はRegexやLocalRegexでも出来るけどこっちの方が重複するようなコードが軽減できる。 Chained属性に指定したPrivate Names(コントローラーのメソッド名)を使って処理をつなげ…

DBIx::ClassとSQLiteで複数のカラムをDISTINCTするとエラーする

DISTINCTで複数のカラムを指定するとエラーした。以下のようにして、複数のカラムをDISTINCTするコード $c->stash->{employees} = [$schema->resultset('Employee')->search( {'name' => {'LIKE' => '%hoge%'} }, { select => {distinct => [qw(me.name, me.…

クロージャ

Perlのクロージャってこうやるのか、 Rubyのブロックのほうがシンプルで好きだな。 sub aaa { my ($args, $method_ref) = @_; $method_ref->($args); } aaa('hogehoge', sub { print @_, "\n"; });

今時風の継承

PerlでのOOPで古くないと思われる実装を調べてみました。 こんな感じかなー。問題なく継承できてるはず。 package Org::Zeon::MS::Dom; use strict; use warnings; use utf8; # Cloneを継承 use parent qw(Clone); sub new { my $class = shift; $class = re…

Catalyst::Plugin::Unicode::Encodingが不思議

内部の文字コードと外部の文字コードを切り替えようとCatalyst::Plugin::Unicode::Encodingを使ってみた。解決しました。 TTを使ってる場合はUTF-8でBOM付きに保存すればOK。コントローラなどで文字列リテラルで日本語を使う場合はdecodeが必要ですけど普通…