use Spreadsheet::ParseExcel; my $spreadsheet_csv; open ( $spreadsheet_csv, '<', $LOOKUP_FILE ); my $fname = $LOOKUP_FILE; my $excel = Spreadsheet::ParseExcel::Workbook->Parse($fname); my @arr = (); my $sheet = $excel->{Worksheet}[0]; foreach my $row ($sheet->{MinRow} .. $sheet->{MaxRow}) { foreach my $col ($sheet->{MinCol} .. $sheet->{MaxCol}) { my $cell = $sheet->{Cells}[$row][$col]; if (exists $cell->{Val}) { push @arr,$cell->{Val}; } else { $cell->{Val} = ''; push @arr,$cell->{Val}; } } }