剛剛稍早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有些問題想請教
: : 主要是判斷&取代的問題
: :