use File::Temp qw/ tempfile /; ($fh, $filename) = tempfile( DIR => $dir ); $template = "tmpfileXXXXX"; ($fh, $filename) = tempfile( $template, DIR => $dir); ($fh, $filename) = tempfile( $template, SUFFIX => '.dat'); $fh = tempfile();