haroldo has asked for the wisdom of the Perl Monks concerning the following question:
#!/usr/bin/perl my ($prefijo, $n1, $n2)=@ARGV; my ($endOfFile1,$endOfFile2)=(0,0); open FILE1, "<".("0"x(8-length($n1)))."$n1"."\/$prefijo".".txt"; open FILE2, "<".("0"x(8-length($n2)))."$n2"."\/$prefijo".".txt"; open OUTPUTF1, ">$prefijo$n1"."NoEn$n2"; open OUTPUTF2, ">$prefijo$n2"."NoEn$n1"; open OUTPUTR1, ">repetidos\-$prefijo$n1"."NoEn$n2"; open OUTPUTR2, ">repetidos\-$prefijo$n2"."NoEn$n1"; my $recordf1=<FILE1> or $endOfFile1=1; my $recordf2=<FILE2> or $endOfFile2=1; my $key1, $key2; my $firstpass=1; my $prevkey1, $prevkey2; while ( !$endOfFile1 && !$endOfFile2 ) { if ($recordf1=~/^ *([0-9]+)\,/) { $prevkey1=$key1; $key1=$1; } else { undef $key1; } if ($recordf2=~/^ *([0-9]+)\,/) { $prevkey2=$key2; $key2=$1; } else { undef $key2; } if ( $key1 < $key2 ) { if (($key1 eq $prevkey1) && !$firstpass) { print OUTPUTR1 $recordf1;} else { print OUTPUTF1 $recordf1;} $recordf1=<FILE1> or $endOfFile1=1; } elsif ( $key1 > $key2 ) { if (($key2 eq $prevkey2) && !$firstpass) { print OUTPUTR2 $recordf2;} else { print OUTPUTF2 $recordf2;} $recordf2=<FILE2> or $endOfFile2=1; } else { $recordf1=<FILE1> or $endOfFile1=1; $recordf2=<FILE2> or $endOfFile2=1; } $firstpass=0 if ($firstpass); } while ( !$endOfFile1 ) { if ($recordf1=~/^ *([0-9]+)\,/) { $prevkey1=$key1; $key1=$1; } else { undef $key1; } if (($key1 eq $prevkey1) && !$firstpass) { print OUTPUTR1 $recordf1;} else { print OUTPUTF1 $recordf1;} $recordf1=<FILE1> or $endOfFile1=1; $firstpass=0 if ($firstpass); } while ( !$endOfFile2 ) { if ($recordf2=~/^ *([0-9]+)\,/) { $prevkey2=$key2; $key2=$1; } else { undef $key2; } if (($key2 eq $prevkey2) && !$firstpass) { print OUTPUTR2 $recordf2;} else { print OUTPUTF2 $recordf2;} $recordf2=<FILE2> or $endOfFile2=1; $firstpass=0 if ($firstpass); } close FILE1; close FILE2; close OUTPUTF1; close OUTPUTF2; close OUTPUTR1; close OUTPUTR2;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Key-based diffs
by haroldo (Acolyte) on Sep 20, 2004 at 05:58 UTC | |
|
Re: Key-based diffs
by TedPride (Priest) on Sep 20, 2004 at 06:13 UTC | |
by haroldo (Acolyte) on Sep 20, 2004 at 06:26 UTC | |
by TedPride (Priest) on Sep 20, 2004 at 11:26 UTC | |
by haroldo (Acolyte) on Sep 20, 2004 at 11:42 UTC |