use strict; use File::Copy qw ( move ); my $dirname = "./temp"; # dir you want to open; my $iterator = 0; opendir (DIRHANDLE, $dirname) or die "could not open dir: $!"; foreach (readdir(DIRHANDLE)) { #need to add path my $filename = $dirname . "/$_"; next unless -f $filename; move ($filename, $dirname . "/" . $iterator++) or warn "could not rename file"; }