in reply to Re^3: hash of hashes?
in thread hash of hashes?

Thanks, You're solution helped quite a bit. The dashes in the example are meant to be there to show missing data in the files.

Replies are listed 'Best First'.
Re^5: hash of hashes?
by txixco (Novice) on Jul 11, 2011 at 14:44 UTC

    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);