我是perl的新手,我遇到了处理txt文件的问题, 它让我担心了好几天。我希望有人能帮助我。 这是txt:
AA=a1.png,a2.png,a3.png,b1.png,b2.png,b3.png,fend.png
FF=k1.png,k2.png,k3.png,l1.png,l2.bmp,l3.png
OO=p1.png,y1.png,ul23.bmp
ZZ=i1.png,j1.png
我想成为:
AA=a1.png,a2.png,a3.png
AA=b1.png,b2.png,b3.png
FF=k1.png,k2.png,k3.png
FF=l1.png,l2.bmp,l3.png
OO=p1.png
OO=y1.png
ZZ=i1.png
ZZ=j1.png
也就是说,我需要截断最后一类图片,并将前两种图片保持为1比1的格式。 提前谢谢。
答案 0 :(得分:1)
my $data = <<'EOD'
AA=a1.png,a2.png,a3.png,b1.png,b2.png,b3.png,fend.png
FF=k1.png,k2.png,k3.png,l1.png,l2.bmp,l3.png
OO=p1.png,y1.png,ul23.bmp
ZZ=i1.png,j1.png
EOD
;
my $last_letter = "";
my $newline = "";
foreach my $line (split(/\n/, $data)) {
my ($var, $vals) = split("=", $line);
foreach my $val (split(",", $vals)) {
$val =~ /^(.)(\d+\..+)$/;
next unless ($1 && $2);
if ($last_letter eq $1) {
print ",";
} else {
print "$newline$var=";
$newline = "\n";
$last_letter = $1;
}
print $val;
}
}
print "\n";
结果:
AA=a1.png,a2.png,a3.png
AA=b1.png,b2.png,b3.png
FF=k1.png,k2.png,k3.png
FF=l1.png,l2.bmp,l3.png
OO=p1.png
OO=y1.png
ZZ=i1.png
ZZ=j1.png