MooseX::Types::Path::Tiny - Path::Tiny types and coercions for Moose
version 0.012
### specification of type constraint with coercion package Foo; use Moose; use MooseX::Types::Path::Tiny qw/Path Paths AbsPath/; has filename => ( is => 'ro', isa => Path, coerce => 1, ); has directory => ( is => 'ro', isa => AbsPath, coerce => 1, ); has filenames => ( is => 'ro', isa => Paths, coerce => 1, ); ### usage in code Foo->new( filename => 'foo.txt' ); # coerced to Path::Tiny Foo->new( directory => '.' ); # coerced to path('.')->absolute Foo->new( filenames => [qw/bar.txt baz.txt/] ); # coerced to ArrayRef[Path::Tiny]
This module provides Path::Tiny types for Moose. It handles two important types of coercion:
coercing objects with overloaded stringification
coercing to absolute paths
It also can check to ensure that files or directories exist.
This module uses MooseX::Types to define the following subtypes.
Path ensures an attribute is a Path::Tiny object. Strings and objects with overloaded stringification may be coerced.
Path
AbsPath is a subtype of Path (above), but coerces to an absolute path.
AbsPath
These are just like Path and AbsPath, except they check -f to ensure the file actually exists on the filesystem.
-f
These are just like Path and AbsPath, except they check -d to ensure the directory actually exists on the filesystem.
-d
These are arrayrefs of Path and AbsPath, and include coercions from arrayrefs of strings.
Path just ensures you have a Path::Tiny object.
File and Dir check the filesystem. Don't use them unless that's really what you want.
File
Dir
Be careful if you pass in a File::Temp object. Because the argument is stringified during coercion into a Path::Tiny object, no reference to the original File::Temp argument is held. Be sure to hold an external reference to it to avoid immediate cleanup of the temporary file or directory at the end of the enclosing scope.
A better approach is to use Path::Tiny's own tempfile or tempdir constructors, which hold the reference for you.
tempfile
tempdir
Foo->new( filename => Path::Tiny->tempfile );
Path::Tiny
Moose::Manual::Types
Types::Path::Tiny
Bugs may be submitted through the RT bug tracker (or bug-MooseX-Types-Path-Tiny@rt.cpan.org).
There is also a mailing list available for users of this distribution, at http://lists.perl.org/list/moose.html.
There is also an irc channel available for users of this distribution, at #moose on irc.perl.org.
#moose
irc.perl.org
I am also usually active on irc, as 'ether' at irc.perl.org.
David Golden <dagolden@cpan.org>
Karen Etheridge <ether@cpan.org>
Toby Inkster <mail@tobyinkster.co.uk>
Demian Riccardi <dde@ornl.gov>
Gregory Oschwald <goschwald@maxmind.com>
This software is Copyright (c) 2013 by David Golden.
This is free software, licensed under:
The Apache License, Version 2.0, January 2004
To install MooseX::Types::Path::Tiny, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MooseX::Types::Path::Tiny
CPAN shell
perl -MCPAN -e shell install MooseX::Types::Path::Tiny
For more information on module installation, please visit the detailed CPAN module installation guide.