---
name: "Dancer2::FileUtils"
section: "3pm"
platform: "linux"
package: "libdancer2-perl"
version: "1.1.2+dfsg-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Dancer2::FileUtils"
---

# Dancer2::FileUtils(3pm)

File utility helpers

## NAME

Dancer2::FileUtils - File utility helpers

## VERSION

version 1.1.2

## 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');

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.

### dirname

```
    use Dancer2::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.

### set\_file\_mode($fh);

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

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

### my $fh = open\_file('\<', $file) or die $message;

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

Calls open and returns a filehandle. Takes in account the 'charset' setting from Dancer2'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 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 $norm\_path=normalize\_path ($path);

### 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) 2024 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.
