sub diffy { my $output; my @one = split(/\n/, $_[0]); my @two = split(/\n/, $_[1]); my $equ = $_[2] || "=="; my $sub = $_[3] || "--"; my $add = $_[4] || "++"; my $eqX = $_[5] || ""; my $suX = $_[6] || ""; my $adX = $_[7] || ""; use Algorithm::Diff qw(traverse_sequences); traverse_sequences(\@one, \@two, { MATCH => sub { $output .= "$equ$one[shift]$eqX\n"}, DISCARD_A => sub { $output .= "$sub$one[shift]$suX\n"}, DISCARD_B => sub { $output .= "$add$two[shift,shift]$adX\n"}, }); return $output; }