my $record = {}; while (my $line = ) { if ($line =~ /UNIQUE-ID/i) { $record = {}; } elsif ($line =~ /TRANSCRIPTION-DIRECTION/i) { process_record($record); $record = {}; } elsif ($line =~ /ACCESSION-1 - (.*)/i // notice "capture" $record{'accession_1'} = $1; // $1 is captured value } ... } unless ($record == {}) process_record($record);