---
name: "File::Spec::Link"
section: "3pm"
platform: "linux"
package: "libfile-copy-link-perl"
version: "0.200-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/File::Spec::Link"
---

# File::Spec::Link(3pm)

Perl extension for reading and resolving symbolic links

## NAME

File::Spec::Link - Perl extension for reading and resolving symbolic links

## SYNOPSIS

```
    use File::Spec::Link;
    my $file = File::Spec::Link->linked($link);
    my $file = File::Spec::Link->resolve($link);
    my $dirname = File::Spec::Link->chopfile($file);
    my $newname = File::Spec::Link->relative_to_file($path, $link);

    my $realname = File::Spec::Link->full_resolve($file);
    my $realname = File::Spec::Link->resolve_path($file);
    my $realname = File::Spec::Link->resolve_all($file);
```

## DESCRIPTION

`"File::Spec::Link"` is an extension to `"File::Spec"`, adding methods for resolving symbolic links; it was created to implement `"File::Copy::Link"`.

- linked($link)

  Returns the filename linked to by `$link`: by `"readlink"`ing `$link`, and resolving that path relative to the directory of `$link`.

- resolve($link)

  Returns the non-link ultimately linked to by `$link`, by repeatedly calling `"linked"`.  Returns `"undef"` if the link can not be resolved.

- chopfile($file)

  Returns the directory of `$file`, by splitting the path of `$file` and returning (the volumne and) directory parts.

- "relative\_to\_file($path, $file)"

  Returns the path of `$path` relative to the directory of file `$file`.  If `$path` is absolute, just returns `$path`.

- resolve\_all($file)

  Returns the filename of `$file` with all links in the path resolved, wihout using `"Cwd"`.

- full\_resolve($file)

  Returns the filename of `$file` with all links in the path resolved.

  This sub tries to use `"Cwd::abs_path"` via `"->resolve_path"`.

- resolve\_path($file)

  Returns the filename of `$file` with all links in the path resolved.

  This sub uses `"Cwd::abs_path"` and is independent of the rest of `"File::Spec::Link"`.

### Object methods

- new(\[$path\])

  create new path object: stores path as a list

- "path"

  returns path as a string, using catpath

- "canonical"

  returns canonical path, using canonpath

- "vol"

  returns volume element of path, see File::Spec-\>splitpath

- "dir"

  returns directory element of path, as a string, see File::Spec-\>splitpath

- "dirs"

  return list of directory components in path, see File::Spec-\>splitdir

- "pop"

  remove last component of the path

- push($file)

  add a file component to the path, ignoring empty strings

- add($file)

  add a component to the path: treating `"updir"` as `"pop"`, and ignoring `"curdir"` and empty strings

- split($path)

  populate a path object, using splitpath

- "chop"

  remove and return a file component from path,  an empty string returns means this was root dir.

- relative($path)

  replace the path object with the supplied path, where the new path is relative to the path object

- "follow"

  follow the link, where the path object is a link

- "resolved"

  resolve the path object, by repeatedly following links

- "resolvedir"

  resolve the links at all component levels  within the path object

### Other class methods

- canonpath($path)

  Wrapper round File::Spec::canonpath, fatal if empty input

- catdir(@dirs)

  Wrapper round File::Spec::catdir, returns `"curdir"` from empty list

- splitlast($path)

  Get component from `$path` (using `"chop"`) and returns remaining path and compenent, as strings. \[Not used\]

### EXPORT

None - all subs are methods for `"File::Spec::Link"`.

## SEE ALSO

**File::Spec**(3) **File::Copy::Link**(3)

## AUTHOR

Robin Barker, \<RMBarker@cpan.org\>

## COPYRIGHT AND LICENSE

Copyright 2003, 2005, 2006, 2007, 2011, 2014, 2024 by Robin Barker

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