• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:%stderr%の値が何をさしているのか)

%stderr%の値が何をさしているのか

このQ&Aのポイント
  • Perlを動かしたら、標準エラーが返ってきました。具体的には、Bareword "FH" not allowed while "strict subs" in use at C:/Apache Group/Apache2/cgi-bin/cgi.cgi line 1000.というエラーメッセージです。
  • このエラーメッセージは、PerlのプログラムでFHというファイルハンドルを使用しようとしたことが原因です。
  • 具体的には、コード中の$q = new CGI(FH);の部分でFHというファイルハンドルを使用していますが、Perlのstrictモードが有効になっているため、Barewordエラーが発生しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • retr
  • ベストアンサー率75% (30/40)
回答No.1

おそらく、スクリプト中で、use strict を使われていますよね? 詳細は web でいくらでも調べられると思うので割愛しますが、端的に言えばご指摘のメッセージは「文字列が'とか"で囲まれていないよ」というエラーです。 通常、CGIモジュールの new メソッドでは、変数か文字列を受け取るはずです。 今回は変数ではないため、文字列として解釈されますが、'や"で囲まれていないためにエラーが表示されています。 実際には perl は'や"がない場合でもこれを文字列として解釈します。なので、use strict がなければエラーは表示されません。 上記の理由で、FHはファイルハンドラとは解釈されていません。shirousa01 さんがしたいことはおそらく下記の書き方でいけると思います。 open(FH,'<',$save_dir.$ID{$name}.'.dat'); $q = new CGI(\*FH); close FH;

shirousa01
質問者

お礼

有り難うございました。 CGI.pmの仕様ではファイルハンドルを渡すと書いてあったので、そのような方法で渡すとは、気付きませんでした。 問題は解決しました。