use Tie::File; tie @array, 'Tie::File', filename or die ...; if ($something) { push @array, $something_else $file_altered++; }