my %hash; while (<>) { if (m/^AMQ8904/) { # start of block found %hash = (); } elsif (m/end/) { # end of block found ... process block ... } else { $hash{QUEUE} = $1 if m/QUEUE\((.*)\)/; $hash{RNAME} = $1 if m/RNAME\((.*)\)/; # ... add more variables of interest ... } }