use strict; my @wanted_lines; open(FILEHANDLE, "<", "your.pl"); my $wanted = 0; my $finished = 0; my $line; do { $line = ; if ($line =~ m/my\s+\$obj\s+=\s+{/) { $wanted = 1; } else { if ($wanted) { if ($line =~ m/^\s*};/) { $wanted = 0; $finished = 1; } else { $line =~ m/\s*(\w+)\s*=>\s*(.*?),/; push @wanted_lines, "\"$1\"$2"; } } } } until ($finished || !defined($line)); close(FILEHANDLE); print join("\n",@wanted_lines);