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