my @Files; my %Table; while (my $FName = shift) { push @Files, $FName; # open spreadsheet & get worksheet, as shown in Spreadsheet::ParseExcel docs for my $row ($row_min .. $row_max) { my $category = $worksheet->get_cell($row, 0); # first column has category my $value = $worksheet->get_cell($row, 1); # second column has value $Table{$category}[@Files] = $val; # Store into slot in table } }