Test::Synopsis

SYNOPSISの構文を自動でチェックするというアイデアid:miyagawaさんがモジュールにしてくれました。
http://search.cpan.org/dist/Test-Synopsis/
ファイルを探すのにExtUtils::Manifestを使っているのがクールですね!

あとこのreturnの使い方に仰天:

  return ($content =~ m/^=head1\s+SYNOPSIS(.+?)^=head1/ms)[0],
         ($content =~ m/^=for\s+test_synopsis\s+(.+?)^=/msg);

"return (x)[0], (y);"という形が許されるのはreturn()だけ?
試してみると,一般に"x (y)[0]"は構文エラーになるみたいだ。return()は普通の組み込み関数と同じだと思っていたらそうでもないんですね。

$ perl -MO=Deparse -e 'return (0)[0]'
return +(0)[0];
-e syntax OK
$ perl -MO=Deparse -e 'return(0)[0]' # スペースがなくても同じ
return +(0)[0];
-e syntax OK
$ perl -MO=Deparse -e 'print (0)[0]'
syntax error at -e line 1, near ")["
-e had compilation errors.
;

ところでTest::Synopsis 0.02なんですが,eval()するときにファイル名と行番号をつけてもらえませんでしょうか。先ほど... at (eval x) line 17. とか言われたあとに手で数えることになってしまって悲しかったので。

(追記)
v0.03でファイル名と行番号に対応してくださいました!