__DATA__ line1=10 line2=30 line3= I am a monk ine4=false line5=20 line6=42 line7= But I haven't read perlretut and I should have! line8=true line8=34 line9=67 line10=Coder line11=false #### line12=00 line2=11 line3= line4=questionable #### my @outfile = ( "line1=10", "line2=30", "line3= I am a monk", "line4=false", "line5=20", "line6=42", "line7= But I haven't read perlretut and I should have!", "line8=true", "line8=34", "line9=67", "line10=Coder", "line11=false", ); my @quads; while (@outfile) { my $line; for (1..4) { # presumption: each data set is made up of 4 consecutive lines * my $line_from_outfile = shift (@outfile); $line_from_outfile =~ /line\d+=(.*)/; $line .= $1 . "/" ; } push @quads, $line; $line = ""; } for my $quad(@quads) { print $quad . "\n"; # to console; writing to file "final.txt" is left as an exercise for OP }