mapで繰り返し処理を短縮

カンマ区切りデータをまとめる

map不使用
my $fh;
my @table;
my $table_hashref = {};

open $fh, '<', 'a.txt';
@table = ();
while (my $line = <$fh>) {
    $line =~ s/[\r\n]$//g;
    my @record = split(',', $line);
    push @table, \@record;
}
$table_hashref->{'a'} = \@table;

open $fh, '<', 'b.txt';
@table = ();
while (my $line = <$fh>) {
    $line =~ s/[\r\n]$//g;
    my @record = split(',', $line);
    push @table, \@record;
}
$table_hashref->{'b'} = \@table;
map使用
sub get_table($) {
    my $name = shift;
    my $fh;
    open $fh, '<', $name . '.txt';
    my @table = ();
    while (my $line = <$fh>) {
        $line =~ s/[\r\n]$//g;
        my @record = split(',', $line);
        push @table, \@record;
    }
    return \@table;
}
my %table_hash = map{ $_ => get_table($_)} ('a', 'b');