perl

MooseX::Types::Path::Classが地味に便利

何かしらのパスをオブジェクトに持たせる事は往々にしてある。でそのオブジェクトがMooseで実装されているのであればMooseX::Types::Path::Classを使うのが地味にすんげー便利。 package MyObject; use Moose; use MooseX::Types::Path::Class qw{File Dir};…

YAMLやYAML::Syckでutf8でdecodeしながら読む

メモ。 YAML::Syckの場合 use YAML::Syck(); my $file = 'data.yaml'; local $YAML::Syck::ImplicitUnicode = 1; my $data = YAML::Syck::LoadFile($file); $YAML::Syck::ImplicitUnicodeを使うことでデコードしながら読むことができる。 YAMLの場合 my $dat…

doはブロックだけどevalはブロックじゃないよ

Perlのブロックってすごいよね. パッと見, 構造っぽいもん. でもevalとかdoとかってブロックが後に続いているだけなんだよね(微妙な認識かも)? ブロック - make for h @ppy_things; タイトルで言ってしまった感がありますが^^;厳密に言うとdoとevalのブロ…

packageの不思議

package Foo; sub foo { print "foo\n"; } package ::Foo; foo; package Bar::::::; sub bar { print "bar\n"; } bar; package main::main::main; sub main { print "main\n"; } package main; main; 実行結果(codepad)とっても不思議だね!

そういやURIモジュールって何でHashベースじゃないんだろう

URIモジュールってのは凄く便利なのでみんな重宝してるんだけどアレってスカラリファレンスのblessなんだよね。いつも思うのが何でハッシュリファレンスにしなかったのかなーってこと。まぁURIモジュール自体、かなり汎用的なモジュールなのでスカラの方がデ…

Catalyst::View::MobileJpFilterを使ってリダイレクト時にもguid=ONを付ける方法

Catalyst::View::MobileJpFilterでのHTML::MobileJP::Filter::DoCoMoGUIDなんですが、本文のURLに対してはguid=ONを付けてくれますが、リダイレクトするときには付いてくれません。なのでとりあえず自分でつけましょう。とはいえ sub hoge : Local { my ($se…

DBIx::Class::Storage::DBI::ReplicationにてMasterで参照クエリを発行する方法

DBIx::Classのちょっとしたメモ、その2。・・・と、思いきや長くなったので一記事に。 Masterで参照クエリを発行する方法なんだけど、ちょこちょこと調べて見たけど情報が殆どないのね。ただみんな色々考えているようで、例えば use Blog::Schema; my $sche…

DBIx::Classのちょっとしたメモ

メモ。一応MySQLベースです。 デバッグ情報出力 $schema->storage->debug(1); よく忘れますorz。実際に発行されたSQL文が出力されるので便利。 一行だけデータが欲しい my $obj = $resultset->search( { hoge_id => $hoge_id } )->first; # または my $obj =…

HTML::MobileJP::Filter::DoCoMoGUIDで同一ホスト内でのguid=ONを有効にするには

今やってるやつでCatalyst::View::MobileJpFilterを使って実装しようと思ってるんだけどHTML::MobileJP::Filter::DoCoMoGUIDで下記のようなケースではguid=ONがついてくれないのです。 <a href="http://example.com/">link</a> どうやらhttpから始まるURLに対してはつかないようですが、これは…

HTML::MobileJp::Filterで独自フィルター作りたい

現状、フィルタープラグインのロードで、HTML::MobileJp::Filter::*の名前空間しかサポートされてないようで、名前空間を気にせずに独自のフィルターを作れないっぽい。なので先頭+でロードできるようにちょいとパッチ。 # HTML::MobileJp::Filter-v0.01_01 …

Moose触ってみるよ!

触るんかい!と、言うことで使ってないうちからあれこれ言うのは愚の骨頂ってことでちょっち実務で使ってみるね!少しだけだけど。でいつもの事ながら組み込むとなればやはり気になるのがパフォーマンス。もう散々書かれてるけど自分で試さないと気がすまな…

Moose触ってみてない!

触ってないのかよ!と、いうことで調べるだけ調べてまったくMoose使ってない僕がMooseについて思うところはぶっちゃけあんまり好きじゃあないという結論。Class::Stdばりに興味が持てないんだよなぁ・・・。コレはほんとーに個人的な好き嫌いの問題なんだけ…

URIモジュールのメモ

各種メソッドの挙動。 use URI; use Data::Dumper; sub p { local $Data::Dumper::Indent = 1; print $_[0]; print Dumper($_[1]); } my $url = 'http://example.com/foo/bar/00000.html?uid=aaaa&hoge=あああ'; my $uri = URI->new($url); p 'scheme :',$ur…

Windows環境でShift_JISなファイル名をPath::Class使って問題なく操作する方法

ちょっとした野暮プログラムで、あるフォルダのファイル名の抽出を行おうと思ったんだ。ほんと軽い気持ちで、そう軽い気持ちでちょこちょこっとさ。 use Path::Class; use Perl6::Say; for my $file ( dir('./hoge')->children ) { say $file->basename; } …

PerlからSkypeでチャット

m/今日/昨日/の捨てコード。 #!/usr/local/bin/perl use strict; use warnings; use Win32::OLE; use Encode; use utf8; use Time::HiRes qw/sleep/; # perl skype.pl username message [sleep=0] # username = 送信したい相手のID # message = 送信する内容…

Catalyst::Plugin::FormValidator::Simple::Messagesのバージョンアップ

Catalyst::Plugin::FormValidator::Simple::Messagesを0.02にバージョンアップしました。Catalyst-Plugin-FormValidator-Simple-Messages-v0.02使ってくださってる方がいたようで、set_invalid_formメソッド呼び出しの時にメッセージがセットされないという…

AUの件名が文字化けしたのはNet::Cmdの仕業だったでござるの巻

既知の事実かもしれないがハマったのでメモメモ。こーんなシンプルなメール送信プログラムを書いたのです。 use strict; use warnings; use MIME::Lite; use Path::Class; my $mime = MIME::Lite->new( From => 'from@exmaple.com', To => 'xxxxxxxxxxxxx@ez…

メアドの集計

今日の捨てコード。 use strict; use warnings; use Mail::Address::MobileJp; use Path::Class; my $path = shift or die; my @line = file($path)->slurp( chomped => 1 ); my %count; for my $line (@line) { next unless $line =~ /Sent - (.*)$/; my $m…

Perl Internalsについて

実は、Perl 5.8以降では、Internals::SvREADONLY()という関数がuseなしで使えるようになっていて、Internals::SvREADONLY($scalar, 1)で$scalarをREADONLY flagをonに、Internals::SvREADONLY($scalar, 0)でoffにできます。 404 Blog Not Found:perl - Const…

no warnings 'whatever'

404 Blog Not Found:perl - use warnings; # -w でなくて # 2008年06月20日 mzp mzp *プログラム参考, Perl use warningsで再帰を書くと、毎回警告されるのがうざい。 http://b.hatena.ne.jp/mzp/20080620#bookmark-9012282 id:mzpさんのブクマ米にちょっく…

Catalyst、というかCPANの話

ふむ。ただしこれを機にモジュールを公開することに億劫になって欲しくはないなぁ。なんか前にどっかでCPANの公共性について話題があったけどそーゆー方面には行って欲しくなかったり。 http://b.hatena.ne.jp/fbis/20080605#bookmark-8845759 Catalystって…

Hashを使って配列をユニークにしよう!

軽く便乗。 use strict; use warnings; use Data::Dumper; my @cars = qw/honda honda suzuki toyota toyota daihatu mitubishia/; my %report = (); for my $car ( @cars ) { $report{ $car }++; } print Dumper \%report; http://perl-mongers.org/2008/06…

Perlが初めての人に教えてあげたいちょっとしたこと

タイトルは釣りです。実際のタイトルは「Perlのオブジェクト指向がムズカシイだって?んなバカな。だったらPHPで再現してやんよ!」でございます。ヘイヘイヘイ。そこの君。Perlのオブジェクト指向が難しいだなんていったい誰が言ったんだい?Perlのオブジェ…

perl-users.jp

YappoLogs: perl-users.jp というサイトを立ち上げました Perl-users.jp - 日本のPerlユーザのためのハブサイト 全力で支持します!と、言っても今すぐに手伝えるようなこともないのでとりあえず啓蒙。Catalyst使ってる時点で初心者じゃねーという野暮な突っ…

Perlは終わった

YAPC::Asia2008。参加してきました。2日目の最後のスピーチ。Perl is unDead。Web1.0時代から活躍し続けてきたPerl。PHPやRailsといったものに王座の場を奪われていったWeb2.0時代。だがしかし毎日CPANにアップされるモジュールの数を見よ。これだけ多くの人…

Hello Worldって、ちょ、ま。

で、バトンははてブのid callでまわしとくのでよろしく>各位 404 Blog Not Found:perl - Hello World! バトン ちょwIDコール飛んできたけどちょっとおかしくね?otsune、miyagawa、takesako、yappo、fbisって俺だけ完全に浮いてるじゃ・・・。ま、まーいー…

PerlでRecallの話

Perl Coreだけで同様のことを実装できないかと考えたらあっさり出来たので。 Perl で JS の arguments.callee 的なことしようと思ってハマった - IT戦記 http://d.hatena.ne.jp/tokuhirom/20080501/1209625789 sub recallable_sub(&) { use B::Deparse; my $…

TAPの話

http://d.hatena.ne.jp/tokuhirom/20080305/1204677112 404 Blog Not Found:「同じコード」の同じって何さ - TAPのススメ弾さんの記事見て思い出した。以前、id:tokuhiromさんに教えてもらったTAPの話ですが、折角なので導入しよーかと。PHP版HTML_FillInFor…

配列のデリファレンス構文?

配列やハッシュの要素へのアクセス方法は、大きく分けて3通りがあります。 インデックスでのアクセス スライスでのアクセス デリファレンス?でのアクセス(この方法、調べてもわかりませんでした。しかし、アクセス出来ることは確かです。) ※3番の方法を…

クラスデータをダンプしたい!

Class::Data::InheritableやClass::Data::Accessorとかでクラスデータを作成するのは凄く便利なんだけど、そのクラスにどれだけクラスデータが存在してるのかとがすぐには把握できないのがデメリットです。なのでさくっとクラスデータをダンプするモジュール…