- 論壇徽章:
- 0
|
open(FH1, "<C:\\dw_ar_cust_info_351001.out") or die("Cann't open this file");
open(FH2, ">C:\\dw_ar_cust_info_351001.out.zhm") or die("cann't open this file");
print "operation running\n";
while (<FH1>)
{
@data = ();
@data = unpack("c*", $_); # 以有符號(hào)的方式解包到@array中
$length = $#data + 1;
@tmpdata = ();
$loop = 0;
for ( ; $loop<$length ; )
{
if (($data[$loop]>-128 && $data[$loop]<0)) # 第一個(gè)字節(jié)大于128,表明此為漢字的開始
{
if ($data[$loop + 1] == 9) # 漢字開始的頭一個(gè)字節(jié)后面跟的是Tab符
{
push(@tmpdata, $data[$loop + 1]); # 把Tab符壓入棧中
$loop = $loop + 2;
next;
}
if ($data[$loop + 1] == 10) # 漢字開始后的字節(jié)馬上是換行符
{
push(@tmpdata, $data[$loop + 1]); # 把換行符壓入棧中
last; # 跳出循環(huán),開始讀取下一行
}
}
if ($data[$loop] > -128 && $data[$loop] < 0) # 如果該字節(jié)為中文的開始
{
if(($data[$loop + 1] > 64) || ($data[$loop + 1] > -128 && $data[$loop + 1] < 0)) # 與前一個(gè)字節(jié)構(gòu)成一個(gè)完整的漢字
{
push(@tmpdata, $data[$loop]);
push(@tmpdata, $data[$loop + 1]);
$loop = $loop + 2;
}
}
else # 合法的ASCII字符
{
push(@tmpdata, $data[$loop]);
$loop=$loop+1;
}
}
$output=pack("c*", @tmpdata);
print FH2 $output;
}
print "operation success\n";
close(FH1);
close(FH2);
|
|
|