1

私はゆっくりと 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";
                }

            }

ファイルを別の方法で読むべきかどうかはわかりませんが、提案や助けがあれば素晴らしいです! 提供できるものは何でもありがとう。

4

1 に答える 1