刚刚稍早po的不对 重po一次
%replace_list可以这样生 (我改叫%h 短一点)
@h{'a' .. 'z'} = @h{'A' .. 'Z'} = (1 .. 9, map {0} 1 .. 17);
然后replace_abc_123可以这样写
$output = join "", map {exists $h{$_} ? $h{$_} : $_} split //, $string;
※ 引述《Neisseria (Neisseria)》之铭言:
: 提供某一种解法,参考看看...
: 假设一个杂凑 %replace_list,里面放的是字母和数字的对应
: 即 a=1 b=2 c=3 ...
: 写一个函数来替换字母,在转换前,先将字母转小写
: sub replace_abc_123 {
: my $string = shift;
: my $output = "";
: for my $e (split //, $string) {
: if ($e =~ /[[:alpha:]]/) {
: $output .= $replace_list{lc $e};
: }
: else {
: $output .= $e
: }
: }
: return $output;
: }
: 然后用常规表示式将要替换的地方抓出来
: 用刚写好的函数来替换掉即可
: 完整的例子可看连结 http://pastebin.com/Cf9Pk1hV
: 参考看看囉
: ※ 引述《sosojopoor (KeiDanX)》之铭言:
: : 各位板上前辈大家好
: : 小弟我刚接触perl有些问题想请教
: : 主要是判断&取代的问题
: :