人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Perl5 を利用しています。

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

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

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

●質問者: zachouR
●カテゴリ:インターネット ウェブ制作
✍キーワード:ファイル メモリ 変数 配列 CS
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● cubick
●60ポイント

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;
◎質問者からの返答

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

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

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


2 ● b-wind
●10ポイント

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

このあたりが限界かな。

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

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

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

Perl ?α黻??????????

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ