my %book_data; SHEET: { for my $sheet ( 0 .. ( $book->{SheetCount} - 1) ) { $work_sheet = $book->{Worksheet}[$sheet]; my $sheet_name = $work_sheet->{Name}; $book_data{ $sheet_name } = []; next SHEET if ! defined $work_sheet->{ MaxRow }; ROW: { for my $row ( $work_sheet->{MinRow} .. $work_sheet->{MaxRow} ) { next ROW if ! defined $work_sheet->{MaxCol}; my @vals; for my $column ( $work_sheet->{MinCol} .. $work_sheet->{MaxCol} ) { my $cell = $work_sheet->{Cells}[$row][$column]; push @vals, $cell; } # next column $book_data{ $sheet_name }[ $row ] = \@vals; } # next row } } # next sheet }