my $filename = "xyz"; for (1..10) { print qq[Filename is "$filename"\n]; $filename = &newname($filename,1); } #### sub newname() { my $filename = shift || "aaaa"; my $sign = shift || 1; my $overwrite = shift; { my $x = 1; 1 while substr($filename,-$x++,1) eq ($sign<1 ? "a":"z"); if (--$x > length $filename) { $filename = tmpnam(); } else { substr($filename,-$x--,1)=chr(ord(substr($filename,-$x,1))+$sign); substr($filename,-$x--,1)=($sign<1 ? "z":"a") while $x; } redo if !$overwrite and -e $filename; return $filename; } }