#! perl use strict; use Data::Dumper ; my %defines; my $flag_in_define = 0; my $name; $ARGV[0] .= ".rpt"; open(FH,"<$ARGV[0]") or die "Cant open"; MAIN_LOOP: while () { if (m/^\.define (.*)/) { $flag_in_define = 1; $name = $1; next MAIN_LOOP; } if (m/^\.\./) { $flag_in_define = 0; next MAIN_LOOP; } if ($flag_in_define) { chomp; $defines{$name} .= $_; next MAIN_LOOP; } } close FH; print Dumper(\%defines);