我正在慢慢学习更多的PERL,并且需要一些帮助来解决我正面临的问题。我有一个以csv格式给出的excel电子表格的输入文件。在电子表格中,如果行中的一个单元格值为“LOV”,则它们将合并单元格并给出值列表。我需要抓住与该LOV一起出现的下一个X行,然后将该LOV与同一行中的其他值一起输出到单行中。所以这里是输入文件的样子:基于特定行中的值获取多行输入文件
Intro |Input|Middle |PPP|Requirement|Manual|Text|||
Intro |Input|END |PPP|Design|Manual|LOV|"Ancestory
Red
Blue
Purple
Orange
Yellow"||
Intro |Output|END |PPP|Design|Automatic|Number|||
该文件看起来像这样,并将重复类似于上面的数据。输出将根据文本,LOV,编号ETC放在不同的文件中。我需要得到的LOV输出如下所示:
Intro |END |LOV|"Ancestory Red Blue Purple Orange Yellow"||
我完全失去了如何解决这个问题。我可以使用数组来获取引用内的下一行吗?我可以抓住所有其他线路,但迄今为止,这是我的逻辑看起来像。
my @LOV;
while(<file1>){
my($line) = $_;
chomp $line;
if $line == "LOV"
{
push @LOV, $_;
while (<file1>)
{
last if /^$/;
push @LOV, $_;
}
print file2 "$output\n";
}
else
{
if ("NUMBER")
{
print file3"output";
}
else if ("Text")
{
print file4"output";
}
}
我不知道我是否应该以不同的方式阅读文件,但任何建议或帮助将是伟大的!谢谢你提供的任何东西。
我觉得我需要一口白兰地酒,也许在读完这个答案后小睡一会儿。优秀! –
我一直在飞行中学习。没有书,也没有真正的老师只是在网上教程和通过其他人。我可以告诉现在我的原始代码有多糟糕。谢谢你的回答,这远远超过我的预期。有没有你可能推荐的书? – user1258104
@ user1258104 - 一个开始的好地方:http://modernperl.net –