読者です 読者をやめる 読者になる 読者になる

Perl日記

PerlとかRubyとかPHPとかPythonとか

ラベルでつまる

いまテストをこんな風に書いている。

GET_COOKIES :
{
  local $ENV{HTTP_COOKIE};
  local $ENV{COOKIE};
  ...
  my %result = get_cookies();
  ...
}
SET_COOKIES :
{
  stdout_is {
    set_cookies(
      ...
    );
  }
}

テストするサブルーチンの名前をそのままテストブロックのラベルに使用している。
大文字にすればかぶらないと思って。
で。
ちょとややこしそうなテストがあったので先に以下のように書いておいたらエラーになった。

...
CRITICAL_ERROR :
{
}
GET_COOKIES :
{
...

$ prove -l t/01-cm.t
syntax error at t/01-cm.t line 17, near "GET_COOKIES "
Execution of t/01-cm.t aborted due to compilation errors.
...

おや syntax error。
全然まちがってないように見えるのだけれども。
考えられるとしたら、{}のブロックが無名ハッシュリファレンスにとられている、とか?


なので、

...
CRITICAL_ERROR :
{
  ;
}

のように間にセミコロンを一つ挟んだらうまくいった。
perldoc も探したけど、見つけられなかった。


よくわからん。