#!/usr/bin/perl $^I = ".bak"; @ARGV = glob "*"; while (<>) { s/old/new/ and $changes = 1; print; if (eof) { # retreat if no changes: rename "$ARGV$^I", $ARGV unless $changes; $changes = 0; # reset } }