Perl игнорирует пробелы на стороне замены подстановки регулярного выражения - PullRequest
2 голосов
/ 03 сентября 2011

Предположим, у меня есть $str = "onetwo".

Я хотел бы написать команду подстановки reg ex, которая игнорирует пробел (что делает его более читабельным):

$str =~ s/
          one
          two
         /
          three
          four
         /x

Вместо "threefour", это производит "\nthree\nfour\n" (где \n - новая строка).В основном опция /x игнорирует пробелы для соответствующей стороны замещения, но не для стороны замены.Как я могу игнорировать пробелы и на стороне замены?

1 Ответ

11 голосов
/ 03 сентября 2011

s{...}{...} в основном s{...}{qq{...}}e.Если вы не хотите qq{...}, вам нужно заменить его на что-то другое.

s/
   one
   two
/
   'three' .
   'four'
/ex

Или даже:

s/
   one
   two
/
   clean('
      three
      four
   ')
/ex

Возможная реализация clean:

sub clean {
    my ($s) = @_;
    $s =~ s/^[ \t]+//mg;
    $s =~ s/^\s+//;
    $s =~ s/\s+\z//;
    return $s;
}
...