- 論壇徽章:
- 0
|
我再研究一個(gè)問(wèn)題 就是單引號(hào)和雙引號(hào) 的問(wèn)題
$Source = "a星許功一1二2三3四4五5六6柒7捌8九9拾";
$Source_unpack = decode('big5',$Source);
print "替換前字串 = $Source\n";
上面 光 這樣子 沒(méi)做任何動(dòng)作 出來(lái)的結(jié)果就不一樣了
結(jié)果會(huì)是
替換前字串 = a星野中G2三3四4五5六6柒7捌8九9拾
但是 如果換成 單引號(hào) 如下
$Source = 'a星許功一1二2三3四4五5六6柒7捌8九9拾';
$Source_unpack = decode('big5',$Source);
print "替換前字串 = $Source\n";
結(jié)果會(huì)是 我想要的
替換前字串 = a星許功一1二2三3四4五5六6柒7捌8九9拾
或許各位大大會(huì)認(rèn)為 用單引號(hào)就好了 可是 $Source 將來(lái)是 有大量的變動(dòng)資料回圈 都是以 變數(shù)回來(lái)的
所以想請(qǐng)問(wèn) 如果這樣子 要如何 才能讓 $Source 一直保持原變數(shù)不變 像用 單引號(hào)一樣 直到 print 出來(lái)
多謝
以下是 我目前呆呆回圈替換法的程式方式
#主程式--開(kāi)始
open(IN,"./PattenMap.txt");
my @PattenMap_DATA = <IN>;
close(IN);
$Source = 'a星許功一1二2三3四4五5六6柒7捌8九9拾';
$Source_unpack = decode('big5',$Source);
print "替換前字串 = $Source\n";
#字元匹配轉(zhuǎn)換-開(kāi)始
while(<@PattenMap_DATA>){
my ($PattenSource,$PattenTarge) = split(/\=/,$_);chomp $PattenSource;chomp $PattenTarge;#分離對(duì)應(yīng)碼並清除多餘值
$PattenSource_decode = decode('big5',$PattenSource);$PattenTarge_decode = decode('big5',$PattenTarge); #對(duì)應(yīng)碼解碼
$Source_unpack =~ s/$PattenSource_decode/$PattenTarge_decode/g; #對(duì)應(yīng)碼替換
$PattenSource="";$PattenSource_decode="";$PattenTarge="";$PattenTarge_decode=""; #對(duì)應(yīng)碼參數(shù)歸0
}
$Source = encode('big5',$Source_unpack); #對(duì)應(yīng)碼編碼
#字元匹配轉(zhuǎn)換-結(jié)束
print "替換後字串 = $Source\n";
PattenMap.txt 前面ok 後面就可以更多 之後會(huì)再用資料庫(kù)來(lái)做替換方式
'一'='壹'
'二'='貳'
'三'='參'
'四'='肆'
'五'='伍'
'六'='陸'
'七'='柒'
'八'='捌'
'九'='玖'
'十'='拾' |
|