68user's page 掲示板

Prev< No. 2251〜2252> Next  [最新発言に戻る] [過去ログ一覧]
No. 2251 # ミング [E-mail] 2001/11/07 (水) 18:42:55
こんにちは。いつもお世話になってます。

Perlについて質問があります。

各ファイルに ”ー1”と ”ー2”が含まれた行があって、それを区切りに2つのファイルに分けたいのですが、なかなかうまくいきません。

EXAMPLE:
*File0001の内容ーー

0001ー1

C100 Open
C101 NG

0001ー2

C102 Open
C103 Open

*File2の内容ーー

0002ー1

C200 Open
C201 NG
C202 Open

0002ー2

C203 Open
C204 NG

この0001と0002の2つのファイルを0001ー1と0001ー2、0002ー1と0002ー2の4つのファイルに分けたいのです。

下のスクリプトは全然間違ってるのですが、/-1/ と /-2/ があった行数を記憶して、後から 行の番号を比較してどうにか区切ろうと思ったのですが、やっぱり最初は$barcode22=0だし、全然駄目です。

普通、どのようにするのか教えて頂けませんか?

よろしくお願いします。

sub read_file_to_array { my($file)=$filename;
        
        open (FILE, "<$dir\\$database\\Defect\\$file") or die "Can't open $file\n";
          $line=0;
            while (<FILE>){
            
            if ($_ =~ /-1/) {$barcode11=$.};
            if ($_ =~ /-2/) {$barcode22=$.};
                                                          
            if ($line > $barcode22) {print "$_ ";}#試しにSTDOU#に出力してみるだけ
                                                            }
            $line++;
                                                    }

No. 2252 # ナナシサソ 2001/11/07 (水) 23:34:55
動くかわからんけどとりあえずできた

sub read_file_to_array { #←?
        my $file = shift;
        open (FILE, "<$dir\\$database\\Defect\\$file") or die "Can't open $file\n";
        open (OUT1, ">$dir\\$database\\Defect\\${file}_1") or die;
        open (OUT2, ">$dir\\$database\\Defect\\${file}_2") or die;
        my ($flag1, $flag2);
        while (<FILE>) {
                if ( /-1/ ) {
                        $flag1 = 1;
                }
                if ( /-2/ ) {
                        $flag2 = 1;
                        $flag1 = 0;
                }
                if ($flag2) {
                        print OUT2;
                        next;
                }
                if ($flag1) {
                        print OUT1;
                        next;
                }
        }
}

Prev< No. 2251〜2252> Next  [最新発言に戻る] [過去ログ一覧]