use 5.010; use strict; use warnings; use Data::Dumper; our %messages = map /^\s+(.+?):(.+)$/?($1=>$2):(), split "\n", <<'=cut'; =head1 MESSAGES The following messages are defined... eof:Unexpected end of file bad_tag:Syntax error in tag =cut print Dumper \%messages;