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
,并将这些值(level2
to level4
)传递给@XYX = (["$data[1]","$data[1]"],);}
level2,er2
level3,er3
level4,er4
Run Code Online (Sandbox Code Playgroud)
我输入level3
所以我需要一个脚本从第三行解析到CSV文件的末尾,忽略文件中之前的值level3
,并将这些值(level3
和level4
)传递给@XYX = (["$data[0]","$data[1]"],);}
level3,er3
level4,er4
Run Code Online (Sandbox Code Playgroud)
我如何实现这一目标?请提出宝贵的建议.我感谢您的帮助
#!/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)
这有效...感谢大家的帮助...
归档时间: |
|
查看次数: |
2416 次 |
最近记录: |