EDIT: tr /// не поддерживает интерполяцию переменных, поэтому я выбрал s/\Q$_\E//g;
вместо
Или, скорее, я что-то не так делаю ...
У меня есть следующий код:
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
sub strip_invalid {
my ($str, @chars) = @_;
map { $str =~ tr/$_//; } @chars;
return $str;
}
my @invalid = qw( a e i o u );
print strip_invalid("This is the super sample with vowels.\n", @invalid);
Я просто хотел бы передать строку в strip_invalid()
и сделать так, чтобы tr///
удалил символы из @invalid
через map
... Где я ошибся? (кстати, с помощью регулярных выражений это работает).