Bulknews::Subtech RSSフィード

2006/10/07 (土)

[perl] use Smart::Comments 21:47  [perl] use Smart::Comments - Bulknews::Subtech を含むブックマーク はてなブックマーク -  [perl] use Smart::Comments - Bulknews::Subtech


use Smart::Commentsはいらないと思う - ヒルズで働くholidays-lの技ログ

ソース中にuse Smart::Commentsは書かなくていいんじゃないかなあと思います。

use Smart::Commentsを消したり、no Smart::Commentsに変えたりするよりも、

デバッグ中だけperl -MSmart::Commentsするとか、PerlSwitches -MSmart::Commentsにしておくとかすれば、

環境によるソースの修正(それが自動で行なわれるとしても)が不要になっていいんじゃないかと思ったり。

発想としては同意したいところだけど、残念ながらコレじゃ動かないケースも。e.g. foo.pl が

use Foo;
Foo->run;

で Foo.pm の中に ### ではじまる Smart Comments がある場合は、 perl -MSmart::Comments foo.pl では有効にならない。Smart::Comments はソースフィルタだから use したコンテキストでしかフィルタがきかない。というわけでこういうときは、やっぱり (Foo.pm の中で)use Smart::Comments が必要。

[Perl] Dumping variables Everywhere without use() 21:34  [Perl] Dumping variables Everywhere without use() - Bulknews::Subtech を含むブックマーク はてなブックマーク -  [Perl] Dumping variables Everywhere without use() - Bulknews::Subtech

2006/10/07 - memo - unknownplace.org

なんかいろいろやっているけど UNIVERSAL も CORE も CORE::GLOBAL もだめなんじゃないかという気がする。どれも perl -MP -e 'package XYZ; p "foo"' とすると

String found where operator expected at -e line 1, near "p "foo""

とか言われて怒られる。いっそのことこういうのはどうだ。

package P;
use strict;
use YAML;

*CORE::GLOBAL::dump = sub {
    warn YAML::Dump(@_);
};

1;

perl のコア関数 dump を上書き。dump なんて誰も使わないでしょ。これならどの名前空間からもいける。

[perl] debugging 02:44  [perl] debugging - Bulknews::Subtech を含むブックマーク はてなブックマーク -  [perl] debugging - Bulknews::Subtech

P - #生存戦略 、それは - subtech

みんな use Data::Dumper; dumper $obj; って書いてるのかなぁ。めどいので

use P;p $obj;

とかしてるよ。。

最近は use YAML; warn Dump $obj が多いんだけど、よりラクにやるなら Damian 先生の Smart::Comments か Ingy の XXX.pm かなぁ。よりによって Damian と Ingy ってのが対極な感じで面白いけど。

Smart::Comments は ### でコメントしてくれれば Dump してくれる。他にも require: で assertion したり、for/while ループでダイアログだしたりいろいろ Cool。

use Smart::Comments;
$foo = some_complex_data;
### $foo

はずすときは use Smart::Comments の行だけコメントアウトすればいい、というのもいいですね。(またデバッグするときにラク)

XXX.pm は Spiffy から XXX/YYY/WWW/ZZZ だけ取り出したモジュール。なぜか cpan> install XXX できないので、install INGY/XXX-0.10.tar.gz するといけます。

use XXX;

$foo = some_complex_data;
XXX $foo;

だけど、XXX はサブルーチンなので式の途中とか先頭にいれてもいい。

use XXX;

XXX $foo = some_complex_data;

XXX は die, WWW は warn, YYY は print, ZZZ は stacktraceつき。この辺のセンスも ingy なんだよなー。