Dancer::FileUtils - File utility helpers


version 1.9999_01


    use Dancer::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 Dancer::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 Dancer::FileUtils qw/read_glob_content set_file_mode/;

    open my $fh, '<', $file or die "$!\n";
    my @content = read_file_content($fh);
    my $content = read_file_content($fh);

    use Dancer::FileUtils qw/open_file/;

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

        use Dancer::FileUtils 'set_file_mode';



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


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

Provides comfortable path resolution, internally using File::Spec. 'path' does not verify paths, it just normalizes the path.

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

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


    use Dancer::FileUtils 'dirname';

    my $dir = dirname($path);

Exposes File::Basename's dirname, to allow fetching a directory name from a path. On most OS, returns all but last level of file path. See File::Basename for details.


    use Dancer::FileUtils 'set_file_mode';


Applies charset setting from Dancer's configuration. Defaults to utf-8 if no charset setting.

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

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

Calls open and returns a filehandle. Takes in account the 'charset' setting from Dancer's configuration to open the file in the proper encoding (or defaults to utf-8 if setting not present).

my $content = read_file_content($file);

    use Dancer::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 seperate element; in scalar context returns the entire contents of the file.

my $content = read_glob_content($fh);

    use Dancer::FileUtils 'read_glob_content';

    open my $fh, '<', $file or die "$!\n";
    my @content = read_glob_content($fh);
    my $content = read_glob_content($fh);

Same as read_file_content, only it accepts a file handle. Returns the content and closes the file handle.

my $norm_path=normalize_path ($path);


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


Dancer Core Developers


This software is copyright (c) 2012 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.