我正在慢慢學習更多的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 –