use strict; use warnings; use Data::Dumper; use Tie::File; # open the file if it exists, but fail if it does not use Fcntl 'O_RDWR'; our @array = (); our $file = 'taste'; tie @array, 'Tie::File', $file, mode => O_RDWR or die $!; our $SearchString = 'HAI WORLD Times ([0-9]+).*$'; #our $ReplaceString = "\t\t'; # we could use such a statement ONLY if we figured out what something() would be my $elementIdx = 0; while($elementIdx <= $#array) { if($array[$elementIdx] =~ $SearchString) { # Maintain only the first character #$array[$elementIdx] = unpack ('a' . (1 + length("\t\t")), something($ReplaceString)); # I would love to know what something() could be so that I can separate the configuration from the logic $array[$elementIdx++] = "\t\t'; #++$elementIdx; } else { splice @array, $elementIdx, 1; # we don't want this in the output } } untie @array; # all done!