【发布时间】:2016-08-05 08:31:44
【问题描述】:
我的 csv 输入文件
Chapter,Content
A,1
B,3
C,1
C,2
C,3
D,5
我当前的 perl 脚本
open(INFILE,$input)||die "can't open the file";
@line = (split/,/,$_);
@line_last = (split/\n/,$line[1]);
if ($_ =~ /A/){
push @con1, $line[1];
}
elsif ($_ =~ /B/){
push @con2, $line[1];
}
elsif ($_ =~ /C/){
push @con3, $line[1];
}
elsif ($_ =~ /D/){
push @con4, $line[1];
}
close INFILE;
chomp @con1, @con2, @con3, @con4;
print "content =", (join ", ", @con1),"\n";
print "content =", (join ", ", @con2),"\n";
print "content =", (join ", ", @con3),"\n";
print "content =", (join ", ", @con4),"\n";
我当前的代码可以运行,但我想让我的代码更短、更高效。 如何使@con 更加自动化?类似于使用 For 循环并使用 $i 分配给 @con 以缩短整体代码。
【问题讨论】:
-
你能提供一个正确输出的样本吗?此外,$input 没有在任何地方声明,所以这段代码不会运行。您还(可能)缺少像
while (<INFILE>) {这样的行 - 没有它 $_ 将不会被定义,@line 中也不会出现任何内容 ... -
$input = "testing.csv";输出:1 3 1,2,3 5
-
错字
我的脚本中有 $input & while ()
$input = "testing.csv"; while (){ 输出:1 3 1,2,3 5
标签: arrays perl for-loop scalar