Первое: всегда используйте строгие и предупреждения, и не используйте $a
и $b
вне сортировки, они особые .
use strict;
use warnings;
my $x = " fddf\n dfdf\n eeee\n";
my $y = " fddf\n dfdf\n pppp\n erww\n";
my @x_chars = split //, $x;
my @y_chars = split //, $y;
my @missing_chars;
while (@x_chars and @y_chars) {
my $next = shift @x_chars;
if ($next eq $y_chars[0]) {
shift @y_chars;
} else {
push @missing_chars, $next;
}
}
push @missing_chars, @x_chars;
my $missing = join '', @missing_chars;
Как уже упоминалось, модули CPAN, такие как String :: Diff (обертка Algorithm :: Diff), обеспечат более простое и всеобъемлющее решение, если ваши требования станут более сложными.