Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re: Loop through 2 files in parallel

by Roy Johnson (Monsignor)
on Nov 10, 2010 at 20:16 UTC ( #870679=note: print w/replies, xml ) Need Help??

in reply to Loop through 2 files in parallel

You definitely don't want to nest your file-reading loops. Instead, try something like this (untested):
while (my $w1 = <FILE> and my $w2 = <FILE2>) { if ($w1 lt $w2) { print "\n"; $w1 = <FILE>; } elsif ($w1 gt $wt) { print "\n"; $w2 = <FILE2>; } else { print $w1; } } # Leftover lines in either file? print "\n" while <FILE>; print "\n" while <FILE2>;

Caution: Contents may have been coded under pressure.

Replies are listed 'Best First'.
Re^2: Loop through 2 files in parallel
by rwitmer (Initiate) on Nov 10, 2010 at 21:07 UTC
    By george, I think this will work. You are truly a monktastic monk! Thanks!
      at least one error in previous code ... while condition is wrong.
      use strict; use warnings; my @FILES; open $FILES[0], '<', 'file1' or die; open $FILES[1], '<', 'file2' or die; my @w = map scalar <$_>, @FILES; my $empty = "blank line\n"; my %map = ( -1 => [ 0 ], 1 => [ 1 ], 0 => [ 0, 1 ], ); while (defined $w[0] && defined $w[1]) { my $cmp = $w[0] cmp $w[1]; print $cmp ? $empty : $w[0]; @w[ @{$map{$cmp}} ] = map scalar <$_>, @FILES[ @{$map{$cmp}} ]; } # Leftover lines in either file? print map $empty, map <$_>, @FILES;

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://870679]
[1nickt]: Hm well actually I guess it's not the trailing semi-colon that's at issue there, it's disambiguation between the ellipsis and the binary flip-flop
[1nickt]: Although the example given does not produce an error as stated, on my perl.
[1nickt]: perl -wE 'say for map { ... } 1..3;' # "Unimplemented at -e line 1" ... <c>perlsyn says that should throw a syntax error...
[karlgoethebier]: 1nickt: "Edge cases..." Yes, it seems so. Thanks Nick

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (9)
As of 2017-11-18 19:46 GMT
Find Nodes?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:

    Results (277 votes). Check out past polls.