---
name: "SHARYANTO::File::Util"
section: "3pm"
platform: "linux"
package: "libsharyanto-file-util-perl"
version: "0.56-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SHARYANTO::File::Util"
---

# SHARYANTO::File::Util(3pm)

File-related utilities

## NAME

SHARYANTO::File::Util - File-related utilities

## VERSION

version 0.56

## SYNOPSIS

```
 use SHARYANTO::File::Util qw(file_exists l_abs_path dir_empty);
 print "file exists" if file_exists("/path/to/file/or/dir");
 print "absolute path = ", l_abs_path("foo");
 print "dir exists and is empty" if dir_empty("/path/to/dir");
```

## DESCRIPTION

## FUNCTIONS

None are exported by default, but they are exportable.

### file\_exists($path) =\> BOOL

This routine is just like the **-e** test, except that it assume symlinks with non-existent target as existing. If `"sym"` is a symlink to a non-existing target:

```
 -e "sym"             # false, Perl performs stat() which follows symlink
```

but:

```
 -l "sym"             # true, Perl performs lstat()
 -e _                 # false
```

This function performs the following test:

```
 !(-l "sym") && (-e _) || (-l _)
```

### l\_abs\_path($path) =\> STR

Just like **Cwd::abs\_path()**, except that it will not follow symlink if `$path` is symlink (but it will follow symlinks for the parent paths).

Example:

```
 use Cwd qw(getcwd abs_path);
 say getcwd();              # /home/steven
 # s is a symlink to /tmp/foo
 say abs_path("s");         # /tmp/foo
 say l_abs_path("s");       # /home/steven/s
 # s2 is a symlink to /tmp
 say abs_path("s2/foo");    # /tmp/foo
 say l_abs_path("s2/foo");  # /tmp/foo
```

Mnemonic: l\_abs\_path -\> abs\_path is analogous to lstat -\> stat.

Note: currently uses hardcoded `"/"` as path separator.

### dir\_empty($dir) =\> BOOL

Will return true if `$dir` exists and is empty.

None are exported by default, but they are exportable.

## FAQ

### Where is file\_empty()?

For checking if some path exists, is a regular file, and is empty (content is zero-length), you can simply use the `"-z"` filetest operator.

## AUTHOR

Steven Haryanto \<stevenharyanto@gmail.com\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Steven Haryanto.

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