我有一个包含以下内容的CSV文件my.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]";
}
请帮我一个脚本来显示上面提到的场景。
答案 0 :(得分: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
答案 1 :(得分:0)
如果您只想打印第一个字段等于或大于指定值(例如$X
)的行,请使用条件:
if ($field[0] >= $X) {
print ...
}