use strict; use warnings; my $file = "z.txt"; open my $fh, "<", $file or die "Unable to open $file: $!"; my %record; while (<$fh>) { chomp; if (/EOU/){ if (exists $record{'u_val'} && exists $record{'p_val'} && exists $record{'m_val'} ) { print "$record{'u_val'}\n", "\t$record{'p_val'}", "\t$record{'m_val'}\n"; } %record = (); } elsif (s/\bProcessing\s\d+\.tx\.\d+: //) { $record{'u_val'} = $_; } elsif (s/\bPhrase: //) { s/\"//g; $record{'p_val'} = $_; } elsif (/\s\s/) { $record{'m_val'} = $_; } } close $fh;