我需要一些幫助來調整我的Perl腳本。perl幫助替換逗號和嵌入ctrl字符的值
我有一個輸入文件,逗號分隔值,像這樣:
to_em,from_em,flags,updated,marks
[email protected]#hv,[email protected],16,2007-08-18 16:18:50,33
第一行是列名to_em from_em flags updated marks
和下面的記錄是每個列的值:
to_em = [email protected]#hv
from_em = [email protected]
flags = 16
updated = 2007-08-18 16:18:50
marks = 33
我還創建了一個唯一值(MD5),前綴爲「__pkey__
」。
每列名稱以^E
開頭。每個值以^A
開頭,包括十六進制值。記錄將以^D
結束。
我想最終的輸出文件看起來像這樣:
__pkey__^Ad41d8cd98f00b204e9800998ecf8427e^Eto_em^[email protected]#hv^Efrom_em^[email protected]^Eflags^A16^Eupdated^A2007-08-18 16:18:50^Emarks^A33^E^D
但是,它出來是這樣的:
__pkey__^Ad41d8cd98f00b204e9800998ecf8427e^E^Ato_em^E^D__pkey__^A5c09354d0d3d34c96dbad8fa14ff175e^E^[email protected]#hv^E^D
這裏是我的代碼:
use strict;
use Digest::MD5 qw(md5_hex);
my $data = '';
while (<>) {
my $digest = md5_hex($data);
chomp;
my ($val) = split /,/;
$data = $data. "__pkey__^A$digest^E^A$val^E^D";
}
print $data;
exit;
你的代碼幾乎與你想要的結果沒有關係,除了while循環和split。 – DVK 2011-02-18 01:46:02