-4

my.csv次の内容の CSV ファイルがあります。

abc,yyy

efg,zzz

zsc,vvv

uvw,ggg

変数の値に応じて、$Xその特定の値からファイルの最後まで読み取る必要があります。例えば:

の場合$X = efg、出力は次のようになります。

efg,zzz

zsc,vvv

uvw,ggg

の場合$X = zsc:

zsc,vvv

uvw,ggg

これは私が開発したスクリプトで、CSV ファイルのコンテンツ全体を読み込んで表示します。

use strict;
use warnings;

open(my $data, '<', $file) or die "Could not open '$file' $!\n";

while (my $line = <$data>) {  
    chomp $line; 
    my @field = split "," , $line;
    print "$field[0] $field[1]";
}

上記のシナリオを表示するスクリプトを手伝ってください。

4

2 に答える 2

1

このソリューションは、一致するテキストの行 1 をスキップし、一致するif (1 .. /\b$start_word\b/)テキストからファイルの末尾までのすべての行を出力します。

#!/usr/bin/perl
use strict;
use warnings;

my $start_word = 'efg';
my @data;

while (<DATA>) {
    chomp;
    if (1 .. /\b$start_word\b/) {
        #print if /\b$start_word\b/;
        @data = [split /,/] if /\b$start_word\b/;
    }
    else {
        #print;
        push @data, [split /,/];
    }
}

# Do something with @data

__DATA__
abc,yyy
efg,zzz
zsc,vvv
uvw,ggg
于 2012-08-31T10:43:39.397 に答える
0

最初のフィールドが指定した値以上の行を印刷するだけの場合 (例: $X)、条件を使用します。

if ($field[0] >= $X) { 
    print ... 
}
于 2012-08-31T10:00:34.180 に答える