OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

<IN>のx行目を操作したい

  • 困ってます
  • 質問No.119371
  • 閲覧数36
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 29% (20/68)

open(IN, $FILE);した時に、
<IN>のx行目とn行目だけを取り出したいと思っています。
これまでは@array=<IN>;としてきたのですが
ファイルが大きくなると非常に遅くなってしまいます。
@arrayに<IN>を格納することなく処理をする事は出来るのでしょうか。
よい方法がありましたら教えて下さい。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル12

ベストアンサー率 75% (398/526)

こんな感じでよいのでは?

 open IN, $file or die;
 while (<IN>) {
   if ($. == $x) { chomp($line_x = $_); }
   elsif ($. == $n) { chomp($line_n = $_); }
 }
 close IN;

 print $line_x;
 print $line_n;

改行除去は必要に応じて行ってください。
お礼コメント
ryogoku

お礼率 29% (20/68)

解決することが出来ました。
ありがとうございました。
投稿日時 - 2001-08-17 09:10:46
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル12

ベストアンサー率 40% (237/589)

単純に考えて、例えば $x = <IN>; をループで回しながら x 行目と n 行目の 場合のみ必要な処理を行い、それ以外を捨てる、というのではダメなのでしょうか? ...続きを読む
単純に考えて、例えば $x = <IN>; をループで回しながら x 行目と n 行目の
場合のみ必要な処理を行い、それ以外を捨てる、というのではダメなのでしょうか?
補足コメント
ryogoku

お礼率 29% (20/68)

レスありがとうございます。
最初青らくだ本などを読んで、
----------------------
open(IN, $file);
$. == $x and $line = $_ while <IN>;
close(IN);
print $line;
----------------------
というようにしてみたのですが
これだとx行目は処理できますがn行目を指定できないので
困ってしまい質問しました。
よろしくお願いします。

また@arrayだと一度格納してしまえば
配列を空にしてしまうまで$array[$x]のように参照できるのに、
上記のものでは処理をおこなう度に、
毎回ファイルをオープンしなければならないのですが
本当にこれで配列に格納した場合より
メモリが節約されているのでしょうか…?
投稿日時 - 2001-08-16 13:47:16
お礼コメント
ryogoku

お礼率 29% (20/68)

解決することが出来ました。
ありがとうございました。
投稿日時 - 2001-08-17 09:10:10
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ