使用Perl将CSV文件从特定行解析到文件末尾

hi1*_*123 5 csv perl perl-module

我对Perl很新,需要你的帮助

我有一个xyz.csv包含内容的CSV文件:

这里的level1和er值是字符串名称......不是数字......

level1,er
level2,er2
level3,er3
level4,er4
Run Code Online (Sandbox Code Playgroud)

我使用下面的脚本解析此CSV文件,并在第一次运行时将字段传递给数组

open(my $d, '<', $file) or die "Could not open '$file' $!\n";
while (my $line = <$d>) {
  chomp $line; 
  my @data = split "," , $line; 
  @XYX = ( [ "$data[0]", "$data[1]" ], );
}
Run Code Online (Sandbox Code Playgroud)

对于第二次运行,我从命令提示符获取输入并存储在变量中$val.我的程序应该从存储在变量中的值解析CSV文件,直到它到达文件末尾

例如

我输入level2所以我需要一个脚本从第二行解析到CSV文件的末尾,忽略文件中的值level2,并将这些值(level2to level4)传递给@XYX = (["$data[1]","$data[1]"],);}

level2,er2
level3,er3
level4,er4
Run Code Online (Sandbox Code Playgroud)

我输入level3所以我需要一个脚本从第三行解析到CSV文件的末尾,忽略文件中之前的值level3,并将这些值(level3level4)传递给@XYX = (["$data[0]","$data[1]"],);}

level3,er3
level4,er4
Run Code Online (Sandbox Code Playgroud)

我如何实现这一目标?请提出宝贵的建议.我感谢您的帮助

hi1*_*123 1

#!/usr/bin/perl  
use strict;     
use warnings;
open(my $data, '<', $file) or die "Could not open '$file' $!\n"; 
my $level = shift ||"level1"; 
while (my $line = <$data>) {  
chomp $line; 
my @fields = split "," , $line; 
if($fields[0] eq $level .. 0){
print "\n$fields[0]\n";
print "$fields[1]\n";
}}
Run Code Online (Sandbox Code Playgroud)

这有效...感谢大家的帮助...