CGI-BBS > CGI > Perl > データファイルの読み込みができない


カレッヂ
カレッヂ


質問者 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裏技