#!/usr/bin/perl # http://perlmonks.org/?node_id=1186417 use strict; use warnings; use Algorithm::Diff qw(traverse_sequences); my @one = do { local @ARGV = $ARGV[0]; <> }; my @two = do { local @ARGV = $ARGV[1]; <> }; my $wantedoldline = $ARGV[2]; my $oldline = my $newline = 0; traverse_sequences( \@one, \@two, { MATCH => sub { $oldline++; $newline++; if( $oldline == $wantedoldline ) { print "$newline\n"; exit; } }, DISCARD_A => sub { $oldline++ }, DISCARD_B => sub { $newline++ }, } ); print "0\n";