• ベストアンサー

CSVの3行目だけを…

はじめまして!Nakanoと申します。 えっと、以下質問になります。おねがいします。。 CGI/Perlを始めて1週間程度の素人なのですが、 CSVファイルをHTMLのテーブル表示させる 様にしたいなと思っています。 そこで用意したCSVファイルが5行と8列で カンマ区切りのみで構成されています。 このCSVファイルから3行目だけを抽出する方法 ってありますでしょうか? 1行目のみ表示や1行目以外の2行目以下全てを表示 させたりは出来たのですが、3行目だけを表示するの がどうしても分かりませんでした・・・・・ 何方様か。よろしければその辺の所を詳しくご指導 いただけないでしょうか? よろしくおねがいします。

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

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

open(NW,"$csv"); seek(NW,0,0); @news = <NW>; close(NW); print "$news[2]"; とりあえず、これでいくんちゃう? ファイルをオープンして、@newに入れて閉じて、 配列の0から初めて3番目を取り出す。 @news って、 $new[0] = "零"; $new[1] = "一"; $new[2] = "二"; $new[3] = "三"; の集まりだから、ファイルを配列に入れちゃえすれば、 あとは、変数として取り出せる、っと。 あとは、下の人みたいに、 ループなら、  for($i=0; $i<$#new; $i++){ if($i eq 3){print "$new[$i]";} } $#newは、newの配列の総数。 あとは、spliceで配列から切り取って、って方法も あるけど。 ・・・最近phpしかつかってないから、あってないかも。^^;

naka225
質問者

お礼

happy books 様 返事が遅くなって申し訳ありません。 お早い返事ありがとう御座います。 ソースの方大変参考になりました。自分の作った ソースに組み込んでみたらちゃんと行指定が出来ました。 ありがとう御座います。 ただ一つ気になるのが、『seek(NW,0,0);』この中の数字 が何を意味しているのか解りませんでした。無くても指定 出来ちゃう?あれ?? もっと凝った使い方する時にひつようなのかな~??? とにかく行指定は出来るようになったから良いのですが… あっ、あとsplitで配列から切り取って、っていうのも 出来るんですか?どうするのでしょうか? よろしくおねがい致します

その他の回答 (2)

回答No.3

早速訂正。 new と news が混じってるけど、統一してください。 それと、newやnewsは関数じゃなくって、変数名・配列名 なので、適当に変えても大丈夫。 newって関数ありそうだもんね。 とりあえずは、この辺は初期の初期で、大事な所だから、 納得いくまでいじってみたら~♪^^;

naka225
質問者

お礼

happy books 様。 お世話になります。 ご丁寧に訂正頂きありがとう御座います。^^

回答No.1

whileで回すんですよね? $num = 0; while($file = <CSV>){  $num++;  if($num == 3){   print "$file";   last;  } } とかでできそうですかね。 確か、現在の行番号を取得する 特殊変数もあった気がします。 そちらの方が簡単かもしれませんが 私がよく使う手は、これです。

naka225
質問者

お礼

nekoda nekomichi 様 返事が遅くなり申し訳ありません。 またお早い回答ありがとうございます。 出来る、という事がわかっただけでも助かりました。 掲載情報も参考にさせていただきます。^^

関連するQ&A