>  2000/08/14 (月) 05:29:53      [mirai]
> > グローバル変数を使うか関数にエラーメッセージを
> > 格納する変数へのリファレンスを渡す。
> > 実際特殊変数の$!はグローバル変数だし。
> グローバル変数を強要するのは論外なので
> リファレンスを渡すようにします。
> というか其の位しか方法無いもんなんですね。
> ともあれどうもありがとうございました。

open() || die "Can't Open Stream :$!";
と同じ様に使いたいってんなら$!がグローバル変数
だからそれと同じような風にするしかないだろ。

あとはリファレンスが渡されなかったら
エラーメッセージは黙って捨てることにすれば経済的

sub xx {
  my($x, $errref) = @_;
  if(&check($x)) {
    $errref && $$errref = "invalid argument";
    return 0;
  }
  # some codes
  $errref && $$errref = "";
  return 1;
}

とか言う感じで。

参考:2000/08/14(月)05時23分48秒