use strict; use warnings; use Tie::File; my @array; tie @array, 'Tie::File', 'filename.txt' or die $!; foreach ( 0 .. $#array ) { if( $array[$_] =~ /word/ ) { $#array = ( $_ < $#array ) ? $_ + 1 : $_; last; } } untie @array;