Perl
Module::Build::fix_shebang_line がshebangを #!/usr/bin/perl.exe eval 'exec /usr/bin/perl.exe -S $0 ${1+"$@"}' if 0; # not running under some shell って置き換えてくれるんだけど、もともと #! /usr/bin/perl eval 'exec /usr/bin/perl -S $0 ${1+"…
どうやらSystem::SendMessageはチャンネル宛にしか送れないらしい。IRC(仕様)もtiarraもNICK宛に送れるので処理が抜けてる気がする。ホントやっつけなんだけど、でっち上げた。 NOTIFY System::SendMessageのChannel部分にカンマ区切りでNICKを指定すると…
tiarraの普通の使い方は「(自分 → tiarra)同マシン → IRCサーバー」なのだと思いますが、主に社内IRCサーバーのログ取り用に「皆 → (IRCサーバー ← tiarra)同マシン」の構成になっており、Log::Channelでログを記録しています。ところが(上記構成が原因…
Time::Piece::MySQL とタイムゾーン (訂正あり) - Yet Another Hackadelic Unix timeにタイムゾーンの概念を持ち込むのは気持ち悪いです。 得られたUnix timeに対してタイムゾーンに対応する目的で数値を加算減算してはいけないと思います。 何故ならUnix ti…
diffに色付けしたかったけど、colordiffみたいな行単位じゃなくて、文字単位で色付けしたい。 id:yappoのString::Diff - Simple diff to String - metacpan.org使ってccdiff(charactor color diff)というのをでっちあげた。 ってか後から単語単位の方がいい…
$mon = { Jan => 0, Feb => 1, Mar => 2, Apr => 3, May => 4, Jun => 5, Jul => 6, Aug => 7, Sep => 8, Oct => 9, Nov => 10, Dec => 11, }->{$mon}; ↓ $mon = (index 'JanFebMarAprMayJunJulAugSepOctNovDec', $mon) / 3;
2011-11-14 バグを見つけたので追記 あー。これ書いたのid:hakobe932だったのね。 File::Morkモジュールのマルチバイト対応 - はこべにっき ♨ - Thunderbirdのabook.mabなどのわけ分からん内容のファイルはFile::Morkを使って復元できる。 ところがFile-Mork…
URI Escapeするときはuriフィルタ(urlフィルタ)でいいんだけど、その逆のURI Unescapeのやり方が(TT標準内には)見つけられなかった。 のでCGI.pmにやらせてみた。 #! /usr/bin/perl use Template; Template->new->process(\*DATA); __DATA__ [% SET link…
PHPで"a=1,b=2,c=3"という文字列を連想配列にする場面があった。 Perlで書くとこんな感じ。 $data = "a=1,b=2,c=3"; $r = {split /[,=]/, $data}; PHPの場合、検索してみてもどうも一発でできないっぽいんだけど。 $data = 'a=1,b=2,c=3'; foreach (array_ch…
まあ、PP のモジュールが void context であることを判定につかってるケースってほとんどないんですけどね。 ないですねぇ。自分もそんなの書かないし。ちなみにClass-MOPではlib/Class/MOP/Method/Wrapped.pmでvoidコンテキスト関連の処理が書かれてますね…
言語的に云々という話ではなくて、複数人で開発するときにハマりそうなので(というかハマったので) 動的にパッチを当てるには # gotoするよ版 BEGIN { use UNIVERSAL::require (); if ( Foo->require ) { my $orig = Foo->can('func'); no warnings qw(red…
色々書きたいもの溜まってるけど、さっきやったExtUtilsに関する修正を書いてみる。 自前のMANIFEST.SKIPが無い場合、ExtUtils-Manifestに同梱されているものが使われる。で、自前のMANIFEST.SKIPを普通に作ってしまうと、ExtUtils-Manifestの方で更新されて…
Catalyst::Helperが出力するMyApp.pmに、 use Catalyst::Runtime '5.70'; ってあるじゃないですか。 あまりHelper使わないから気付かなかったけど、良く見たら文字列になってるんですよね。ってことは、Catalyst::Runtimeバージョン5.70以上を要求してるわけ…
Module-Install-0.87が出ました。この件直ってます。 Diff from Module-Install-0.86 to Module-Install-0.87 Module-Install-0.86 - Standalone, extensible Perl module installer - metacpan.orgperl Makefile.PLしたときに、 *** Module::AutoInstall ve…
CPANPLUSに最大の敬意を示すため、CPANを使わないという信念に沿ったシステム(なんじゃそりゃ)では、 % rm -rf $HOME/.cpan % touch $HOME/.cpan % chmod 0000 $HOME/.cpan として、CPANを封印すると良いでしょう。(最後のchmodは余分だけど、CPANPLUSへ…
最近Perlから外部コマンドを実行する場合は、openやsystemなどを使わずにIPC::Cmdを良く使っている。 特に深い理由はないんだけど、 IPC::Cmdは5.009005からコアモジュールに入っている それなりに綺麗に書ける $IPC::Cmd::VERBOSEを真にしておけば、実行す…
http://wassr.jp/user/holidaysl/statuses/A1naJAQqnO ってつぶやいた事があるんだけど、犯人はModule/CPANTS/Kwalitee/Distros.pmでした。 こんな感じの t/04kwalitee.t を使ってます。 #! /usr/bin/env perl # # $Id$ # use strict; use warnings; use utf…
テストがエラーになるんだけども、原因はDBIx::Class::ResultSetManagerが消えるからのようです。 http://blog.hide-k.net/archives/2008/10/dbixclassresult_1.phpめんどくせーのでDEVELOPER RELEASE入れてやったぜヒャッハー! % cpanp -i I/IL/ILMARI/DBIx-Clas…
もう1年以上前からになりますが、 lighttpdでファイルが存在しない場合にFastCGI-Catalystへ飛ばす設定とプラグイン - ヒルズで働く@robarioの技ログ このようなプラグインを使っていました。この度(主に自分都合により)このプラグインをCPANに0.0.1として…
Re: http://d.hatena.ne.jp/tokuhirom/20090319/1237428528 PadWalker(PadWalker - play with other peoples' lexical variables - metacpan.org) という呪文でも、こざかしいテクニックを打ち破る事ができます。 コードはこちら。 { package F; use stric…
Catalystのバージョンを5.71にしたらこんなメッセージが出るようになりました。 [warn] Used regexp fallback for $c->model('View::TT'), which found 'MyApp::Web::View::TT=HASH(0x21d44d0)'. Relying on regexp fallback behavior for component resolut…
Shipwrightちょっとだけ使ってみたよ - ヒルズで働く@robarioの技ログ 本当にちょっとだけ使って、その後一切使ってないっす。 コミットされまくるのが嫌だ。
ギークなお姉さんに初めてのトラックバック。 DTIブログ サービス終了のお知らせ の最後にあるfubaさんのnegative wordsを見て猛烈に最適化してみたくなった。 use utf8; use Regexp::Assemble; binmode STDOUT=>'utf8'; @words = split /\|/, 'ヘルプ|へる…
Scalar::Utilで、"Weak references are not implemented"とかいわれて落ちる問題 - Kentaro Kuribayashi's blog 解決:Scalar::Util::weakenを使おうとするとWeak references are not implementedで落ちる - ヒルズで働く@robarioの技ログ CPAN経由での再イ…
Perl の“隠し演算子”ドライバー、テスラ、モンゴル… Kawanet Blog II/ウェブリブログB::Deparseを使えば分かり易いかも? % perl -MO=Deparse -e '!%!' use Errno (); not %!; -e syntax OK なお、perldoc Errnoには "Errno" also makes "%!" magic と書かれ…
信じられない間違いを犯していましたぁ!!(><) aliasを書き直しました。 もし以前のaliasを持っていたら、見比べてニヤニヤしてくださいヽ(;´Д`)ノ 何かCPANPLUSでdistroprefsが使えない(CPANモジュールのオレオレパッチ - ヒルズで働く@robarioの技ログ)…
distroprefs使ってる? 簡単に言うと、cpanの設定の${prefs_dir}/prefsにyamlをゴニョゴニョ書いておけば、cpanコマンドでインスコする時に勝手にパッチ当ててくれたりするやつ。 例えばhttp://d.hatena.ne.jp/tokuhirom/20080630/1214785904のパッチを自前…
{ local $c->view->template->service->{WRAPPER} = []; $c->forward( $c->view ); }
% svn proplist --verboseで出てくるプロパティリストをPerlのデータ構造に変換しようと思ったんだけど、解析がちょっと面倒くさそう。 じっと見てるとYAMLっぽく見えてきたので、YAML::Syckでやったら割と簡単に変換できました。 #!/usr/bin/env perl # デ…
EmacsでPerl開発する上で必須な設定 #2 - flymake - Kentaro Kuribayashi's blog Catalystで、C::E::HTTP::Restarterを使ってると、flymakeが作ったFoo_flymake.pmを検出して勝手に再起動しまくるので超困る。 C::E::HTTP::RestarterがFoo_flymake.pmを認識…