#! perl -slw use strict; use Data::Dump qw[ pp ]; my %cmds; for my $fname ( <*Cmd.pm> ) { print $fname; my( $name ) = $fname =~ m[(^.+)Cmd.pm]; %{ $cmds{ $name } } = do $fname; } pp \%cmds; __END__ C:\test>832090.pl billCmd.pm fredCmd.pm { bill => { command_1 => { Command_maps => [], _discussion => "\n some text about command_1", build_types => ["FLIGHT"], cmd_id => 250033, constraints => undef, description => "\n shorter text about command_1", fixed_pattern => 143, safety_level => "SAFE", target => "command_target", }, command_2 => { Command_maps => [], _discussion => "\n some text about command_2", build_types => ["FLIGHT"], cmd_id => 250014, constraints => undef, description => "\n shorter text about command_2", fixed_pattern => 144, safety_level => "SAFE", target => "command_target", }, }, fred => { command_1 => { Command_maps => [], _discussion => "\n some text about command_1", build_types => ["FLIGHT"], cmd_id => 250033, constraints => undef, description => "\n shorter text about command_1", fixed_pattern => 143, safety_level => "SAFE", target => "command_target", }, command_2 => { Command_maps => [], _discussion => "\n some text about command_2", build_types => ["FLIGHT"], cmd_id => 250014, constraints => undef, description => "\n shorter text about command_2", fixed_pattern => 144, safety_level => "SAFE", target => "command_target", }, }, }