我正在慢慢地学习更多关于 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|||
该文件看起来像这样,并且将使用与上面类似的数据重复。输出将根据 Text、LOV、Number 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";
}
}
我不知道我是否应该以不同的方式阅读文件,但任何建议或帮助都会很棒!谢谢你能提供的任何东西。