Scroll to navigation

Dancer2::FileUtils(3pm) User Contributed Perl Documentation Dancer2::FileUtils(3pm)

NAME

Dancer2::FileUtils - File utility helpers

VERSION

version 2.1.0

SYNOPSIS

    use Dancer2::FileUtils qw/dirname path path_or_empty/;
    # for 'path/to/file'
    my $dir  = dirname($path); # returns 'path/to'
    my $path = path($path);    # returns '/abs/path/to/file'
    my $path = path_or_empty($path);    # returns '' if file doesn't exist
    use Dancer2::FileUtils qw/path read_file_content/;
    my $content = read_file_content( path( 'folder', 'folder', 'file' ) );
    my @content = read_file_content( path( 'folder', 'folder', 'file' ) );
    use Dancer2::FileUtils qw/read_glob_content set_file_mode/;
    open my $fh, '<', $file or die "$!\n";
    set_file_mode($fh);
    my @content = read_glob_content($fh);
    my $content = read_glob_content($fh);
    use Dancer2::FileUtils qw/open_file/;
    my $fh = open_file('<', $file) or die $message;
    use Dancer2::FileUtils 'set_file_mode';
    set_file_mode($fh);

DESCRIPTION

Dancer2::FileUtils includes a few file related utilities that Dancer2 uses internally. Developers may use it instead of writing their own file reading subroutines or using additional modules.

FUNCTIONS

my $path = path( 'folder', 'folder', 'filename');

Calls Path::Tiny's "path(...)->stringify" path parts. Better if you use Path::Tiny::path(@parts) directly instead.

If you want to normalize the path (for existing path), use:

    Path::Tiny::path(@parts)->realpath->stringify;

my $path = path_or_empty('folder, 'folder','filename');

Like path, but returns '' if path doesn't exist.

dirname

    use Dancer2::FileUtils 'dirname';
    my $dir = dirname($path);
    # Same thing:
    use Path::Tiny qw< path >;
    my $dir       = path($path)->parent;
    my $as_string = $dir->stringify;

Fetches the directory name of a path On most OS, returns all but last level of file path. See Path::Tiny for details.

set_file_mode($fh, $charset);

    use Dancer2::FileUtils 'set_file_mode';
    set_file_mode($fh);

Applies the specified charset. Defaults to utf-8 if no charset is provided. An empty charset disables encoding layers.

my $fh = open_file('<', $file, $charset) or die $message;

    use Dancer2::FileUtils 'open_file';
    my $fh = open_file('<', $file) or die $message;

Calls open and returns a filehandle. If a charset is provided, opens the file in that encoding; otherwise defaults to utf-8. An empty charset disables encoding layers.

my $content = read_file_content($file, $charset);

    use Dancer2::FileUtils 'read_file_content';
    my @content = read_file_content($file);
    my $content = read_file_content($file);

Returns either the content of a file (whose filename is the input), or undef if the file could not be opened.

In array context it returns each line (as defined by $/) as a separate element; in scalar context returns the entire contents of the file.

my $content = read_glob_content($fh);

    use Dancer2::FileUtils 'read_glob_content';
    open my $fh, '<', $file or die "$!\n";
    binmode $fh, ':encoding(utf-8)';
    my @content = read_glob_content($fh);
    my $content = read_glob_content($fh);

Similar to read_file_content, only it accepts a file handle. It is assumed that the appropriate PerlIO layers are applied to the file handle. Returns the content and closes the file handle.

my $escaped_filename = escape_filename( $filename );

Escapes characters in a filename that may alter a path when concatenated.

  use Dancer2::FileUtils 'escape_filename';
  my $safe = escape_filename( "a/../b.txt" ); # a+2f+2e+2e+2fb+2etxt

EXPORT

Nothing by default. You can provide a list of subroutines to import.

AUTHOR

Dancer Core Developers

COPYRIGHT AND LICENSE

This software is copyright (c) 2026 by Alexis Sukrieh.

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

2026-04-05 perl v5.40.1