my solution is almost the same as GrandFather's, except for the use of unpack() instead of a regex to split the lines.

this may be noticeably faster with large files; however, the perl regex engine is often so well optimized that, in the case of a simple regex like the one below, the actual code generated may actually be an unpack() call or something very like it!

three variations are presented; all produce the same output.

only the section of the code that differs is presented below.

(and, yes, you should have considered GrandFather's response more carefully before replying.)

use constant UNPACKER => 'A24 A*'; open IN, '<', \$file1; while (<IN>) { # my ($key, $tail) = m/(.{24})(.*)/; # my ($key, $tail) = unpack('A24 A*', $_); # my ($key, $tail) = unpacker(); my ($key, $tail) = unpack(UNPACKER, $_); push @{$f1Lines{$key}}, [$tail, $.]; } close IN; open IN, '<', \$file2; while (<IN>) { # my ($key, $tail) = m/(.{24})(.*)/; # my ($key, $tail) = unpack('A24 A*', $_); # my ($key, $tail) = unpacker(); my ($key, $tail) = unpack(UNPACKER, $_); next unless exists $f1Lines{$key}; my @matches = @{$f1Lines{$key}}; print "Line $. of file2 ($key$tail) matches:\n"; print " line $_->[1] of file1 ($key$_->[0])\n" for @matches; } close IN; sub unpacker { unpack('A24 A*', $_) }

In reply to Re: Compare Partial Lines of 2 Text Files by Anonymous Monk
in thread Compare Partial Lines of 2 Text Files by Knoperl

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.