in reply to Slow Comparison

I'd turn at least one of those arrays into a hash and eliminate the nested for loop. If you provide a little sample data (or even better show small samples of the manifest files) and the expected output you'll probably even get some real code.

True laziness is hard work

Replies are listed 'Best First'.
Re^2: Slow Comparison
by tart (Beadle) on Nov 30, 2010 at 03:47 UTC
    Please check Updates! in First post, Thanks.

      Consider:

      use strict; use warnings; my $man1 = <<MAN; EXECUTE 1302267 help.txt RUN 387469 help.txt PIPE 34010402 run.exe MAN my $man2 = <<MAN; EXECUTE 1302267 help.txt RUN 387469 run.exe PIPE 34010202 run.exe MAN my %manLu1; open my $inMan, '<', \$man1; while (<$inMan>) { chomp; my ($program, $size, $file) = split ' ', $_, 3; $manLu1{$program}{$file} = $size if defined $file; } close $inMan; open $inMan, '<', \$man2; while (<$inMan>) { chomp; my ($program, $size, $file) = split ' ', $_, 3; next if ! exists $manLu1{$program}{$file} || $manLu1{$program}{$fi +le} == $size; print "1: $program\n"; print "1: $file\n"; print "1: $manLu1{$program}{$file}\n"; print "2: $size\n"; } close $inMan;

      Prints:

      1: PIPE 1: run.exe 1: 34010402 2: 34010202
      True laziness is hard work