NAME

File::Temp::MoreUtils - Provide more routines related to creating temporary files/dirs

VERSION

This document describes version 0.005 of File::Temp::MoreUtils (from Perl distribution File-Temp-MoreUtils), released on 2021-07-20.

SYNOPSIS

FUNCTIONS

tempdir_named

Usage:

tempdir_named(%args) -> any

Try to create a temporary directory with certain name (but used .1, .2, ... suffix if already exists) .

Examples:

  • Attempt to create /foo/source.dir/, and if already exists /foo/source.1.dir/ instead, and so on:

    tempdir_named(name => "/foo/source.dir");
  • Attempt to create source/ inside another temporary directory, and if already exists source.1/, and so on:

    tempdir_named(name => "source", dir => undef);
  • Attempt to create source.dir/, and if already exists source.tmp1.dir/, then source.tmp2.pdf, and so on:

    tempdir_named(name => "source.dir", suffix_start => "tmp1");

This is similar to tempfile_named(), but since there is no O_EXCL flag similar to opening a file, there is a race condition possible where you create a certain temporary directory and before you open/read the directory, someone else has replaced the directory with another. Therefore it is best if you create the specifically-named temporary directory inside another temporary directory.

Like File::Temp's tempdir(), it will return the path of the created temporary directory:

$dir

This function is not exported by default, but exportable.

Arguments ('*' denotes required arguments):

  • dir => dirname

    If specified, will create the temporary directory here.

    If specified and set to undef, will create new temporary directory using File::Temp's tempdir (with CLEANUP option set to true unless DEBUG environment variable is set to true) and use this temporary directory for the directory, including for subsequent invocation for the same process whenever dir is set to undef again.

  • name* => filename

  • suffix_start => str (default: 1)

    Will use Perl's post-increment operator (++) to increment the suffix, so this works with number as well as letter combinations, e.g. aa will be incremented to ab, ac and so on.

Return value: (any)

tempfile_named

Usage:

tempfile_named(%args) -> any

Try to create a temporary file with certain name (but used .1, .2, ... suffix if already exists) .

Examples:

  • Attempt to create source.pdf, and if already exists source.1.pdf, and so on:

    tempfile_named(name => "source.pdf");
  • Attempt to create source.pdf in a temporary directory, and if already exists source.1, and so on:

    tempfile_named(name => "source", dir => undef);
  • Attempt to create source.pdf, and if already exists source.tmp1.pdf, then source.tmp2.pdf, and so on:

    tempfile_named(name => "source.pdf", suffix_start => "tmp1");

Unlike File::Temp's tempfile() which creates a temporary file with a unique random name, this routine tries to create a temporary file with a specific name, but adds a counter suffix when the specified name already exists. Care has been taken to avoid race condition (using O_EXCL flag of sysopen). This is often desirable in the case when we want the temporary file to have a name similarity with another file.

And like File::Temp's tempfile(), will return:

($fh, $filename)

This function is not exported by default, but exportable.

Arguments ('*' denotes required arguments):

  • dir => dirname

    If specified, will create the temporary file here.

    If specified and set to undef, will create new temporary directory using File::Temp's tempdir (with CLEANUP option set to true unless DEBUG environment variable is set to true) and use this temporary directory for the directory, including for subsequent invocation for the same process whenever dir is set to undef again.

  • name* => filename

  • suffix_start => str (default: 1)

    Will use Perl's post-increment operator (++) to increment the suffix, so this works with number as well as letter combinations, e.g. aa will be incremented to ab, ac and so on.

Return value: (any)

ENVIRONMENT

DEBUG

HOMEPAGE

Please visit the project's homepage at https://metacpan.org/release/File-Temp-MoreUtils.

SOURCE

Source repository is at https://github.com/perlancar/perl-File-Temp-MoreUtils.

BUGS

Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=File-Temp-MoreUtils

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

SEE ALSO

File::Temp

AUTHOR

perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2021 by perlancar@cpan.org.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.