我需要帮助了解如何适应$ hash {$ i}使用不同大小的@headers数组加载的情况。 使用严格; 使用警告;如何从变量大小的数组初始化HoH
my $file = "list.csv";
open (FILE,"$file") || die "Can't open file: $!\n";
my (@lines) = <FILE>;
close(FILE);
my @headers = split(',',$lines[0]);#split up header line
my %hash;
for (my $i=1; $i < scalar(@lines); $i++)
{
my @strings = split(',',$lines[$i];
# NEED help here
$hash{$i} = {
$headers[0] => $strings[0],
$headers[1] => $strings[0],
$headers[2] => $strings[0],
$headers[3] => $strings[0],
$headers[4] => $strings[0],
$headers[5] => $strings[0]
};
}
是否有一种方法来加载散列索引为标量(@headers)= 5,6,7 ...等情况下?是否有程序上的等价物像...
$hash{$i} = {
$headers[0] => $strings[0],
...
$headers[n] => $strings[n]
};
或
$hash{$i} = {@headers => @strings);
另请参阅:http://stackoverflow.com/questions/38345/is-there-an-elegant-zip-to-interleave-two-lists-in-perl -5和http://stackoverflow.com/questions/3715957/how-can-i-assign-two-arrays-to-a-hash-in-perl/3715993#3715993 – 2011-01-21 00:45:15