Ok, so check this solution with dashes, in the case you need them; if not, use the previous snippet.
#!/usr/bin/perl
use strict;
use warnings;
# Constants
my $BLANK_LINE = qr/^\s+$/;
my $KEY = qr/>([A-Z])/;
# Variables
my %content = ( 'A' => [], 'B' => [], 'C' => [], 'D' => [], 'E' => [],
'F' => [], 'G' => [], 'H' => [], 'I' => [], 'J' => [],
'K' => [], 'L' => [], 'M' => [], 'N' => [], 'O' => [],
'P' => [], 'Q' => [], 'R' => [], 'S' => [], 'T' => [],
'U' => [], 'V' => [], 'W' => [], 'X' => [], 'Y' => [],
'Z' => [] );
# Take the data
for (<*.db>) {
open(FILEDB, $_) or die "No se puede abrir el archivo $_: $!\n";
my $key;
my %contentTemp;
for (<FILEDB>) {
if (/$BLANK_LINE/) {
next;
} elsif (/$KEY/) {
$key = $1;
$contentTemp{$key} = [];
} else {
chomp;
push(@{$contentTemp{$key}}, $_);
}
}
# Are there some missing keys?
foreach my $k (sort keys %content) {
if ($contentTemp{$k}) {
push(@{$content{$k}}, @{$contentTemp{$k}});
} else {
push(@{$content{$k}}, "-, -");
}
}
close(FILEDB);
}
# Write the new file
open(FILEDB, ">resultado.db") or die "No se puede abrir el archivo res
+ultado.db: $!\n";
for my $key (sort keys %content) {
print FILEDB ">$key\n\n" . join(", ", @{$content{$key}}) . "\n\n";
}
close(FILEDB);
|