use Modern::Perl; open my $infh, '<', 'orders.txt'; open my $outfh, '>', 'orders.txt.tmp'; while( <$infh> ) { chomp; my @vals = split "\t"; my $status = $vals[19]; if( $vals[0] = 'trigger text' ) { $vals[19] = 'Delivered'; } print $outfh join("\t",@vals), "\n"; } close $infh; close $outfh; rename "orders.txt", "orders.txt.bak"; rename "orders.txt.tmp", "orders.txt"; #### use strict; use warnings; use Modern::Perl use Tie::File; tie my @lines, 'Tie::File', 'orders.txt' or die $!; foreach my $line ( @lines ) { chomp $line; my @vals = split "\t", $line; if( $vals[0] == 'trigger text' ) { $vals[19] = 'Delivered'; } $line = join( "\t", @vals ) . "\n"; } untie @lines;