- ベストアンサー
※ 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エラーが発生しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
おそらく、スクリプト中で、use strict を使われていますよね? 詳細は web でいくらでも調べられると思うので割愛しますが、端的に言えばご指摘のメッセージは「文字列が'とか"で囲まれていないよ」というエラーです。 通常、CGIモジュールの new メソッドでは、変数か文字列を受け取るはずです。 今回は変数ではないため、文字列として解釈されますが、'や"で囲まれていないためにエラーが表示されています。 実際には perl は'や"がない場合でもこれを文字列として解釈します。なので、use strict がなければエラーは表示されません。 上記の理由で、FHはファイルハンドラとは解釈されていません。shirousa01 さんがしたいことはおそらく下記の書き方でいけると思います。 open(FH,'<',$save_dir.$ID{$name}.'.dat'); $q = new CGI(\*FH); close FH;
お礼
有り難うございました。 CGI.pmの仕様ではファイルハンドルを渡すと書いてあったので、そのような方法で渡すとは、気付きませんでした。 問題は解決しました。