編集: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
...どこが間違っていたのですか?(ちなみに、正規表現を使用すると機能します)。