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 readlinking $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, <Robin.Barker@npl.co.uk>

COPYRIGHT AND LICENSE

Copyright 2003, 2005, 2006, 2007 by Robin Barker

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