|
以下perl腳本
[PHP]
$file4 = "臨時.txt";
$file3 = "字.txt";
open (FILE3, "$file3") || die "打不開文檔“$file3”!";
open (FILE4, ">$file4") || die "無法創建文檔“$file4”!";
select FILE4;
@zf = <FILE3>;
# $sch = $zf[0];
# $sch = substr ($sch,0,6); # 「字.txt」為UTF-8碼,此處取6剛剛好得到一個漢字,此步應該得到「啊」。
$sch = "ang";
@biet = grep (/$sch/, @zf);
print @biet;
[/PHP]
該腳本grep函數搜索「字.txt」,可以得到如下預期結果:
但是,奇怪的是,以下腳本
[PHP]
$file4 = "臨時.txt";
$file3 = "字.txt";
open (FILE3, "$file3") || die "打不開文檔“$file3”!";
open (FILE4, ">$file4") || die "無法創建文檔“$file4”!";
select FILE4;
@zf = <FILE3>;
$sch = $zf[0];
$sch = substr ($sch,0,6); # 「字.txt」為UTF-8碼,此處取6剛剛好得到一個漢字,此步應該得到「啊」。
# $sch = "ang";
@biet = grep (/$sch/, @zf);
print @biet;
[/PHP]
卻只能搜到「字.txt」的第一行,得不到預期結果:
預期結果應該是:
真是奇怪了,百思不得其解,究竟是怎麼回是呢?
grep 只搜索了「字.txt」的第一行,其他行均被忽略了。證明方法是,在
$sch = substr ($sch,0,6);
後加一行:
$sch = "$sch"."b";
這樣本來應該搜索得到「字.txt」第二行「啊b1」,但結果什麼都搜不出。因為第一行是「啊a1」,grep只搜了第一行。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|