use strict; use warnings; use feature qw{ say }; open my $dataFH, q{<}, \ <<__EOD__ or die $!; JOB::HEREISASTRING Something StringA StringB StringC StringD Something Else StringE StringF StringG StringH JOB::HEREISANOTHERSTRING Something StringI StringJ StringK StringL Something Else StringM StringN StringO StringP __EOD__ chomp( my @cleared = <$dataFH> ); close $dataFH or die $!; my $flag; foreach my $item ( @cleared ) { if ( $item =~ m{^JOB} ) { say $item; next; } elsif ( $item !~ m{^String} ) { $flag = $item; next; } else { say qq{~~$flag~~$item}; } }