my $data = q(0 ASDF ASEE ASEE 13 DERG DREG 28 QWER QWER 42 WERT WERT WERT 55 QWEASD QWEASD QWEASD QWEASD ); open $hndl , "<", \(my $s = $data); open $out , ">", \(my $formatted = ''); my $substitute_field; READ_FILE: while (my $line = <$hndl>) { chomp $line; ## Ignore any lines that don't contain relevant text $line =~ /\S+/ or next READ_FILE; $line =~ /^\s*(\d+)(\s+)([A-Z]+)/ and do { $substitute_field = $1; print $out $substitute_field, $2 ,$substitute_field,"\n"; next READ_FILE; }; ## If we don't have a field to substitute move on defined $substitute_field or next READ_FILE; ## Must have valid line $line =~ s/^(\s*)([A-Z]+)/$1$substitute_field/; print $out $line,"\n"; } print $formatted; close $hndl; close $out;