• ベストアンサー

データの読み込み方法

CGI@Perlの質問です。 下記のような内容のdata.txtファイルがあります。 すべてを読み込みブラウザで表示する方法は本により理解をしたのですが、 このスクリプトを改良して、二行目のみを取り出し表示したり、 文字列(例:「ニ」がある行だけを表示)を検索して表示したいと思っています。 どなたかスペシャリストの方、下記のスクリプトに手を加え 分かりやすくご説明していただけないでしょうか? よろしくお願いいたします。 ○全部表示するスクリプト------------------------- #user/local/bin/perl $count = 1; print"Content-type:text/html\n\n"; print<<EOF; <html> <head> <title>テスト</title> <head> <body> EOF open(DATA,"data.txt"); while($count <= 3){ $data = <DATA>; print "$data<BR>"; $count++; } close(MENU); print<<EOF; </body> </html> EOF exit; ------------------------------------- 【data.txt】 一行目のテキスト 二行目のテキスト 三行目のテキスト

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

  • ベストアンサー
回答No.2

>現在、data.txtは3行しかないと分かっているので >$count <= 3としていますが、もしdata.txt内に >何行のデータがあるかわからない場合は、どのような >書き方にすると良いか教えていただけないでしょうか? と言う事で…再投稿です。 #$data = <DATA>; @data = <DATA>; # $→@へ変更 foreach $line (@data) {# ファイル内容から一行だけ取得 if ($line =~ /二/) { # $dataを$lineへ変更   print "$line<BR>"; # $dataを$lineへ変更 } } これならば[data.txt]の内容が0行であっても、1万行であっても対応出来る…(筈w)。

umioo
質問者

お礼

何度もありがとうございます。 本当に助かりました!!

その他の回答 (2)

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.3

open(DATA,"data.txt"); while(<DATA>){ #一行ずつ読む if(/二/){print "$_<BR>";} #二の文字を発見→出力 } close(MENU);

umioo
質問者

お礼

なるほど! (<DATA>)とすると一行づつ読み込めるんですね。 大変勉強になりました。 ありがとうございます。

回答No.1

$data = <DATA>; if ($data =~ /二/) { #ここを追加  print "$data<BR>"; } #ここを追加 たぶん、これで動いた様な。。

umioo
質問者

補足

早速のご返答ありがとうございます。 ばっちり動きました!!! あともう一つ質問があるのですが、 現在、data.txtは3行しかないと分かっているので $count <= 3としていますが、もしdata.txt内に 何行のデータがあるかわからない場合は、どのような 書き方にすると良いか教えていただけないでしょうか? 何度も申し訳ありませんが、ご教授いただければ幸いです。よろしくお願いいたします。