カレッヂ |
質問者 Octo
投稿日 7/17(火) 18:13:36
下記スクリプトを実行したところ、該当データがあるにもかかわらず 必ず sub noinfo が実行されてしまいます。 何がおかしいのでしょうか? $datafile = "../demo/cargo.txt"; $rec = ""; open (READ,"<$dafafile"); while (<READ>) { @items = split (/\t/,$_); chomp ($items[8]); if ($items[0] eq $prefix && $items[1] eq $suffix) { $rec .= "<table border=2 bgcolor=\"white\" cellpadding=5>\n"; (以下、$rec に追記していく文が続く) } } close (READ); if ($rec eq "") { &noinfo; } else { &info; } sub noinfo { print <<"NOINFO"; Content-Type: Text/Html (以下、該当記録がない場合のメッセージ) NOINFO } sub info { print <<"INFO"; Content-Type: Text/Html (以下、該当記録がある場合のメッセージ) INFO } ===ここまで=== なお、$datafile はタブ区切りのテキストファイルで 1番目が $prefix、2番目が $suffix にあたります。 またこのファイルのパーミッションは755です。 データファイルのパスも間違っていないはずですし この$prefix・$suffixという変数定義もおかしくは ないはずなのですが・・・ どうしてもわからないで困っています。 よろしくお願いします。 |
回答者 呑兵衛
[削除]
投稿日 7/18(水) 00:00:50
呑兵衛といいます。 2つほど指摘させて頂きます。 > open (READ,"<$dafafile"); は open (READ,"<$datafile"); のタイプミスですよね。 > $rec .= "<table border=2 bgcolor=\"white\" cellpadding=5>\n"; 前後で $rec に代入された値があるかどうか分かりませんが $rec に代入しているつもりなのか、それともコマンドどおり文字列の連結をしているのか。 ここらのところはいかがでしょうか? かりに $rec の値が 初期値の $rec = ""; のままであれば これだけ拝見する限りでは $rec に値は入っていないと思いますが。 |
質問者 Octo
[削除]
投稿日 7/18(水) 19:37:01
> open (READ,"<$dafafile"); は > open (READ,"<$datafile"); のタイプミスですよね。 あああああっ!!! なんというくだらないミスを・・・ ここを直したら正常に動きました。 > $rec .= "<table border=2 bgcolor=\"white\" cellpadding=5>\n"; >前後で $rec に代入された値があるかどうか分かりませんが >$rec に代入しているつもりなのか、それともコマンドどおり文字列の連結をしているのか。 >ここらのところはいかがでしょうか? >かりに $rec の値が 初期値の $rec = ""; のままであれば >これだけ拝見する限りでは $rec に値は入っていないと思いますが。 コマンドどおり文字列の連結です。 最初の $rec = "" はその通り初期値を空白にしておくための初期化作業です。 表示画面では無事にこのテーブルが表示されましたので 文字列連結も正常に行われたもようです。 どうもありがとうございました。 |
返信(回答)する
Web裏技 |