请教文本转换,2行变1行

请教文本转换,2行变1行

请教文本转换,2行变1行
文本
1,9,6.4,13,12
1,6,7.6,15,15
-------
-------
-------
[b]去小数,1位数变为2位数,2行变1行[/b],转换为文本
0101,0906,0607,1315,1215
-------
-------
-------
写个例子呵呵,...
写个例子呵呵,t.txt就是你要转换的文本,out.txt是转换后的文本
注意:这个例子是针对你给出的文本样例而写的,也只能对你给出的那个文本内容的格式进行转换,文本总行数最好为偶数且不要有空行,否则也许会出错:

我的t.txt的内容为:
1,9,6.4,13,12
2,9,6.4,13,12
1,3,7.9,15,7
8,2,6.14,13,12
4,5.98,3.6,15,15
1,6,7.6,13,10

代码为:

#!/usr/bin/perl
#cnhackTNT [AT] perlchina.org

$file_in="t.txt";
$file_save="out.txt";

open(F_IN,"$file_in") or die "$!\n";
open(F_OUT,">>$file_save") or die "$!\n";
while(<F_IN>){
chomp;
if($.%2){
@data=map{sprintf "%02d", $_}split(",",$_);
next;
}else{
@data2=map{sprintf "%02d", $_}split(",",$_);
for (0..$#data){
$comma=',' if not $_==$#data;
print F_OUT $data[$_].$data2[$_].$comma;
undef $comma;
}
print F_OUT "\n";
}
undef @data,@data2;
}
close F_IN;
close F_OUT;

转换后的out.txt内容:
0102,0909,0606,1313,1212
0108,0302,0706,1513,0712
0401,0506,0307,1513,1510


这个方法不是什么好方法,仅仅用来提供参考
[CCB]2[/CCB] [CCB]2[/CCB]
能解决问题的方法就是好方法!
严重感谢!
严重看齐!
另外,能否在处理后的文本每行前加一数字,1位或2位,如:
t.txt的内容为:
1,9,6.4,13,12
2,9,6.4,13,12
1,3,7.9,15,7
8,2,6.14,13,12
4,5.98,3.6,15,15
1,6,7.6,13,10
转换后的out.txt内容:
1,0102,0909,0606,1313,1212
1,0108,0302,0706,1513,0712
1,0401,0506,0307,1513,1510
我用unshift试一下.

其它解决方案共...
其它解决方案共享:源于chinaunix.net怒剑狂啸
open (FILE,"t.txt");#要打开的文件
open(STDOUT,">result.txt");
while ($a=<FILE>) {
$b=<FILE>;
chomp ($a,$b);
@a=split(/,/,$a);
@b=split(/,/,$b);
for($i=0;$i<=$#a;$i++) {
push @c,sprintf("%02d%02d",$a[$i],$b[$i]);
}
unshift(@c,"1");
print join(",",@c),"\n";
@c=();
}
close FILE;
呵呵,多谢诸位了!朋友鼎力的感觉真好!
#!/usr/bin/per...
#!/usr/bin/perl -w
# Written by Cactus (wjyong@sh163.net)

open FILE, 't.txt';
open OUT, '>out.txt';

while (my $a = <FILE>) {
$a =~ s/([\d\.]+),/sprintf '%02d', $1/eg;
my $b = <FILE>;
my $i = 0;
$b =~ s/([\d\.]+)/sprintf '%02d%02d', substr($a, 2 * $i++, 2), $1/eg;
print OUT $b;
}
close FILE;
close OUT;