Обычно я бы порекомендовал Text :: xSV и / или Text :: CSV , но для таких простых данных прямое join
должно работать:
#!/usr/bin/perl
use strict;
use warnings;
my %hash = (
foo1 => [ 0, 0, 0, 0, 1 ],
foo2 => [ 1, 0, 0, 0, 1 ],
foo3 => [ 3, 4, 5, 6, 7 ],
);
for my $key ( sort keys %hash ) {
print join( q{,}, $key, @{ $hash{$key} } ), "\n";
}
__END__
Выход:
C:\Temp> ttt
foo1,0,0,0,0,1
foo2,1,0,0,0,1
foo3,3,4,5,6,7
Чтение в:
#!/usr/bin/perl
use strict;
use warnings;
my %hash;
while ( <DATA> ) {
chomp;
last unless /\S/;
my ($key, @data) = split /,/;
$hash{$key} = \@data;
}
print $hash{foo2}->[4], "\n";
__DATA__
foo1,0,0,0,0,1
foo2,1,0,0,0,1
foo3,3,4,5,6,7
Выход:
C:\Temp> ttt
1