my @list_of_files = qw{File Edit Help}; my $regex_to_match_label = qr{LABEL="([^"]+)}; my @menu; for my $filename (@list_of_files) { open my $fh, '<', $filename or die "Can't read $filename: $!"; my @submenu; push @menu, { -label => $filename, -submenu => \@submenu }; while (<$fh>) { if (/$regex_to_match_label/) { my $label = $1; push @submenu, { -label => $label, -value => sub { generic_dialog($label) } }; } } close $fh; }