my $filename = "attachment"; { my ($y, $m, $d) = (localtime)[5,4,3]; $y += 1900; $m += 1; $filename = join "-", $filename, $y, $m, $d; } # I assume $user and $ext are already set to the # username and the filetype extension respectively. while (-e "/home/$user/$filename.$ext") { $filename .= ('a'..'z')[rand 26]; # It is possible to be more elegant than this. } open FILEHANDLE, ">/home/$user/$filename.$ext"; binmode FILEHANDLE; # Probably not necessary on *nix. print FILEHANDLE $content; close FILEHANDLE;