... $/ = ''; my %list; while ( my $block = ) { my ($tag, @list) = split /\n/, $block; s/^-- // for @list; $list{$tag} = \@list; } my $row = 0; foreach my $tag ( @{ $list{'main'} } ) { if ( exists $list{$tag} ) { $worksheet->write($row, 0, $tag); $worksheet->write_row($row++, 1, $list{$tag}); } } ...