--- name: File::Temp runtime: pp source: src/native/File/Temp/pp.rs --- ```{index} single: File::Temp; Perl module (pp runtime) ``` # File::Temp Native implementation of File::Temp Provides tempfile() and tempdir() with automatic cleanup on process exit. All created temp files and directories are tracked in a global registry. On process exit (via `cleanup_temp_files()`), entries marked for cleanup are removed. This prevents stale temp files accumulating in /tmp. Perl equivalent: File::Temp (core module, pure Perl + POSIX) # Synopsis use File::Temp qw(tempfile tempdir); my ($fh, $filename) = tempfile(SUFFIX => '.dat'); print $fh "some data\n"; my $dir = tempdir(CLEANUP => 1); # OO interface my $tmp = File::Temp->new(DIR => '/tmp', SUFFIX => '.log'); print $tmp "log line\n"; my $name = $tmp->filename; # Functions ## new OO constructor. Creates a temporary file and returns a blessed File::Temp hashref that doubles as a filehandle. Accepts options: DIR, SUFFIX, TEMPLATE/PREFIX, UNLINK. ### Synopsis use File::Temp; my $fh = File::Temp->new(SUFFIX => '.dat', DIR => '/tmp'); print $fh "data\n"; ## newdir OO constructor for temporary directories. Creates a temp directory and returns a blessed File::Temp::Dir hashref with stringify overload. Accepts options: DIR, CLEANUP, TEMPLATE/PREFIX. ### Synopsis use File::Temp; my $dir = File::Temp->newdir(CLEANUP => 1); print "$dir\n"; # stringifies to path ## filename Instance method. Returns the filename of a File::Temp object by extracting the `__filename` key from the blessed hashref. ### Synopsis my $fh = File::Temp->new(); my $name = $fh->filename; ## tempfile Create a temporary file and return `($fh, $filename)` in list context. The file is created exclusively (race-free via O_EXCL). Accepts options: DIR, SUFFIX, PREFIX/TEMPLATE, UNLINK. ### Synopsis use File::Temp 'tempfile'; my ($fh, $name) = tempfile(DIR => '/tmp', SUFFIX => '.txt'); ## tempdir Create a temporary directory and return its path. Registered for automatic cleanup unless CLEANUP => 0. Accepts options: DIR, CLEANUP, PREFIX/TEMPLATE. ### Synopsis use File::Temp 'tempdir'; my $dir = tempdir(CLEANUP => 1); ## tmpnam Generate a temporary filename (without creating it). Returns a path in the system temp directory with a pseudo-random name. ### Synopsis use File::Temp 'tmpnam'; my $name = tmpnam(); ## mktemp Generate a temporary filename from a template. Trailing X characters in the template are replaced with pseudo-random digits. ### Synopsis use File::Temp 'mktemp'; my $name = mktemp("myapp_XXXXXXXX"); ## mkstemp Create a temporary file from a template and return `($fh, $filename)`. Trailing X characters are replaced with pseudo-random digits. The file is created exclusively and registered for cleanup. ### Synopsis use File::Temp 'mkstemp'; my ($fh, $name) = mkstemp("myapp_XXXXXXXX"); ## mkstemps Like mkstemp but with a suffix. The second argument specifies the suffix length: template characters after that point are preserved as the file extension. ### Synopsis use File::Temp 'mkstemps'; my ($fh, $name) = mkstemps("myapp_XXXXXXXX.dat", 4); ## mkdtemp Create a temporary directory from a template. Trailing X characters are replaced with pseudo-random digits. Registered for automatic cleanup. ### Synopsis use File::Temp 'mkdtemp'; my $dir = mkdtemp("myapp_XXXXXXXX"); ## cleanup Explicitly trigger cleanup of all registered temporary files and directories. Normally called automatically at process exit. ### Synopsis use File::Temp 'cleanup'; cleanup(); ## unlink0 Unlink a temporary file by name while it may still be open, and remove it from the cleanup registry (since it is already deleted). ### Synopsis use File::Temp 'unlink0'; unlink0($fh, $filename);