私はゆっくりと PERL について学んでおり、直面している問題について助けが必要です。私はcsv形式で与えられたExcelスプレッドシートからこの入力ファイルを持っています。スプレッドシートでは、行内のセル値の 1 つに「LOV」がある場合、セルを結合して値のリストを表示します。その LOV に対応する次の X 行を取得し、その LOV を同じ行の他の値を含む 1 行に出力する必要があります。入力ファイルは次のようになります。
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";
}
}
ファイルを別の方法で読むべきかどうかはわかりませんが、提案や助けがあれば素晴らしいです! 提供できるものは何でもありがとう。