- ベストアンサー
データの読み込み方法
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】 一行目のテキスト 二行目のテキスト 三行目のテキスト
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>現在、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)。
その他の回答 (2)
- Ethersky
- ベストアンサー率71% (168/235)
open(DATA,"data.txt"); while(<DATA>){ #一行ずつ読む if(/二/){print "$_<BR>";} #二の文字を発見→出力 } close(MENU);
お礼
なるほど! (<DATA>)とすると一行づつ読み込めるんですね。 大変勉強になりました。 ありがとうございます。
- Tsukasa0215
- ベストアンサー率22% (280/1257)
$data = <DATA>; if ($data =~ /二/) { #ここを追加 print "$data<BR>"; } #ここを追加 たぶん、これで動いた様な。。
補足
早速のご返答ありがとうございます。 ばっちり動きました!!! あともう一つ質問があるのですが、 現在、data.txtは3行しかないと分かっているので $count <= 3としていますが、もしdata.txt内に 何行のデータがあるかわからない場合は、どのような 書き方にすると良いか教えていただけないでしょうか? 何度も申し訳ありませんが、ご教授いただければ幸いです。よろしくお願いいたします。
お礼
何度もありがとうございます。 本当に助かりました!!