Как мне найти то, чего не хватает во второй строке на основе первой строки? - PullRequest
0 голосов
/ 05 ноября 2018

$ a = " БДЛФ \ п dfdf \ п ээээ \ п "

$ b = " БДЛФ \ п dfdf \ п PPPP \ п erww \ п "

Вывод должен быть "eeee \ n", потому что он отсутствует во второй строке. Я думал об использовании регулярного выражения perl, но оно не говорит мне, чего не хватает во второй строке.

1 Ответ

0 голосов
/ 06 ноября 2018

Первое: всегда используйте строгие и предупреждения, и не используйте $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), обеспечат более простое и всеобъемлющее решение, если ваши требования станут более сложными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...