use warnings; use strict; my $N = 3; my $new = "NEW"; while () { my @words = split /\s+/; $words[$N-1] = $new if scalar @words >= $N; print join " ", @words, "\n"; } __DATA__ hi there everyone I am looking to substitute lots of words for new ones, but only the third word per line on each line! one one two one two three one two three four