#!/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 () { 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 resultado.db: $!\n"; for my $key (sort keys %content) { print FILEDB ">$key\n\n" . join(", ", @{$content{$key}}) . "\n\n"; } close(FILEDB);