Perl5 を利用しています。


そこで、OPEN命令をつかってCSVファイルを呼んでいるのですが、全部読み込むと変数でメモリを圧迫してしまう(自分は全部をまとめて配列に入れる方法しか知りません)ので、

X行目のみの一列だけを読みたいときは皆さんはどうしているでしょうか?

よろしくお願い致します。

回答の条件
  • URL必須
  • 1人20回まで
  • 登録:2007/07/12 12:06:08
  • 終了:2007/07/19 12:10:04

回答(2件)

id:cubick No.1

cubick回答回数122ベストアンサー獲得回数352007/07/12 13:08:33

ポイント60pt

whileループで処理し、指定行が見つかった時にその行を取り出せばよいのではないでしょうか?


http://www.unix.org.ua/orelly/perl/cookbook/ch08_09.htm

#!/usr/bin/perl -w
# print_line-v1 - linear style

@ARGV == 2 or die "usage: print_line FILENAME LINE_NUMBER\n";

($filename, $line_number) = @ARGV;
open(INFILE, "< $filename") or die "Can't open $filename for reading: $!\n";
while (<INFILE>) {
    $line = $_;
    last if $. == $line_number;
}
if ($. != $line_number) {
    die "Didn't find line $line_number in $filename\n";
}
print;
id:zachouR

ご解答ありがとうございます。

はい、ループは考えました。

ただ、数行目を読み込んでくるような便利な命令はないかなーと思いまして、、、。

2007/07/12 13:30:03
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402007/07/12 16:17:55

ポイント10pt

ただ、数行目を読み込んでくるような便利な命令はないかなーと思いまして、、、。

このあたりが限界かな。

1 while ( defined(<INPUT>) && $. == $line );
$value = $_;

簡単に書く方法はあるだろうけど、やってる内容は一緒。

固定長ならともかく任意長で改行コードだけが頼りのテキストファイルで特定の部分を効率よく取り出す方法はないはず。(Perl に限らず)

Perl �α黻�Ҥ�ͥ������

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません