可以说我有一个包含以下信息的文件learning.txt:
A *
B &
C (
D )
如何获取用户输入的字符串abc
并返回*&(
Perl中有一个非常有效的(O(N + M))解决方案
my %replace = ( A => '*', B => '&', C => '(', D => ')' );
my $re = join '|', map quotemeta, keys %replace;
$re = qr/($re)/;
# and somewhere else in the scope with $re and %replace
s/$re/$replace{$1}/g;
但是对于不区分大小写的情况,它有点复杂
use feature qw(fc); # since v5.16 use lc otherwise
my %replace = ( A => '*', B => '&', C => '(', D => ')' );
my $re = join '|', map quotemeta, keys %replace;
$re = qr/($re)/i;
my %replace_fc;
@replace_fc{ map fc, keys %replace } = values %replace;
# and somewhere else in the scope with $re and %replace_fc
s/$re/$replace_fc{fc $1}/g;
只给%replace
您的文件中像这样
while (<>) {
my ($key, $val) = split;
$replace{$key} = $val;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句