下の質問間違えて解決してしまいました。

[上に] [前に] [次に]
taro [E-Mail] 2000/06/10(土) 13:35:28
ありがとうございます。
なんとなくわかりました。
あつかましいようですが,ちょっと質問よりずれてしまうかもしれませんがもう少し。
csv.files=
time
a,a1,a2,a3,a4
b,b1,b2,b3,b4
c,c1,c2,c3,c4




となってるデータファイルより@dataに任意の数だけのデータを渡したいのです。
全部とりだすsubルーチンを下記のように設定してます。
sub csv_open {
    if (!open(CSV,"$csv_file")) { $msg = 'データファイルが見つかりません。'; &error; }
    @data_lines = <CSV>;
    close(CSV);
    $time_data = $data_lines[0];
    shift (@data_lines);
}
で,foreach文で@data_lineから100番目から200番目までのサンプルを@dataにとりだそうと考えてたんです。
そうすると

foreach (@data_lines) {
        if($i++>100){push(@data,$_)}
        if($i=200){last;}
        }
で,いいんでしょうか?
最初からcsv filesを開くときに100個のサンプルを取る方法はないものでしょうか?

Fuji.♪ [E-Mail] [HomePage] 2000/06/10(土) 14:39:54
読み込む段階で

open (CSV, "<$csv_file") or &error('データファイルが見つかりません。');
$min = 100;
$max = 200;
for ($i = 1; $i < min; i++) { $_ = <CSV>; }
for ($i = $min; $i < $max; i++) { $data[$i - $min] = <CSV>; }
close(CSV);

とかじゃダメなの?
なんか妙にforeachに拘ってるようだけど、配列の項目を直接アクセスするならforの方が楽でしょ。

あと、トピックのタイトル見ても内容が全然わからないので、○○の続きみたいなタイトルにして、最初のメッセージで「間違えて閉じてしまいました」とか書きましょう。

2000/06/11(日) 02:58:20
>あと、トピックのタイトル見ても内容が全然わからないので、○○の続きみたいなタイトルにして、最初のメッセージで「間違えて閉じてしまいました」とか書きましょう。
下の質問ってのも、なんのことだかわからないしね。

[上に] [前に] [次に]