use File::IdealCopy; my $cp = new IdealCopy(recursive => 1, rename_callback => \&rename, post_copy_callback => \&post); IdealCopy("/mnt/source", "/data/dest"); sub rename { return lc; } sub post { open FP1, $_[0] or die; open FP2, ">$_[0].new" or die; while() { chomp; print FP2, $_ + 1, $/; } close FP1; close FP2; }