Aion-Fs
view release on metacpan or search on metacpan
lib/Aion/Fs.pm view on Meta::CPAN
{
local $^O = "vmesa";
my $path = {
path => ' USERID FILE EXT VOLUME ',
userid => "USERID",
file => "FILE EXT",
name => "FILE",
ext => "EXT",
volume => "VOLUME",
};
path $path->{path} # --> $path
path {volume => "x", file => "f"} # -> ' f x'
}
=head3 See also
=over
=item * https://en.wikipedia.org/wiki/Path_(computing)
=back
Modules for determining the OS, and therefore determining what file paths are in the OS:
=over
=item * C<$^O> â superglobal variable with the name of the current OS.
=item * L<Devel::CheckOS>, L<Perl::OSType> â define the OS.
=item * L<Devel::AssertOS> â prohibits the use of the module outside the specified OS.
=item * L<System::Info> â information about the OS, its version, distribution, CPU and host.
=back
Parts of file paths are distinguished:
=over
=item * L<File::Spec> â C<< ($volume, $directories, $file) = File::Spec-E<gt>splitpath($path) >>. Only supports unix, win32, os/2, vms, cygwin and amigaos.
=item * L<File::Spec::Functions> - C<($volume, $directories, $file) = splitpath($path)>.
=item * L<File::Spec::Mac> - included in L<File::Spec>, but not defined by it, so it has to be used separately. For mac os version 9.
=item * L<File::Basename> â C<($name, $path, $suffix) = fileparse($fullname, @suffixlist)>.
=item * L<Path::Class::File> â C<< file('foo', 'bar.txt')-E<gt>is_absolute >>.
=item * L<Path::Extended::File> â C<< Path::Extended::File-E<gt>new($file)-E<gt>basename >>.
=item * L<Mojo::File> â C<< path($file)-E<gt>extname >>.
=item * L<Path::Util> - C<$filename = basename($dir)>.
=item * L<Parse::Path> â C<< Parse::Path-E<gt>new(path =E<gt> 'gophers[0].food.count', style =E<gt> 'DZIL')-E<gt>push("chunk") >>. Works with paths as arrays (C<push>, C<pop>, C<shift>, C<splice>). It also overloads comparison operators. It has sty...
=back
=head2 transpath ($path?, $from, $to)
Converts a path from one OS format to another.
If C<$path> is not specified, C<$_> is used.
For a list of supported operating systems, see the examples of the C<path> subroutine just above or like this: C<keys %Aion::Fs::FS>.
OS names are case insensitive.
local $_ = ">x>y>z.doc.zip";
transpath "vos", "unix" # \> /x/y/z.doc.zip
transpath "vos", "VMS" # \> [.x.y]z.doc.zip
transpath $_, "vos", "RiscOS" # \> .x.y.z/doc/zip
=head2 splitdir (;$dir)
Splits a directory into components. The directory should first be obtained from C<< path-E<gt>{dir} >>.
local $^O = "unix";
[ splitdir "/x/" ] # --> ["", "x", ""]
=head2 joindir (;$dirparts)
Combines a directory from its components. The resulting directory should then be included in C<< path +{dir =E<gt> $dir} >>.
local $^O = "unix";
joindir qw/x y z/ # => x/y/z
path +{ dir => joindir qw/x y z/ } # => x/y/z/
=head2 splitext (;$ext)
Breaks the extension into its components. The extension should first be obtained from C<< path-E<gt>{ext} >>.
local $^O = "unix";
[ splitext ".x." ] # --> ["", "x", ""]
=head2 joinext (;$extparts)
Combines an extension from its components. The resulting extension should then be included in C<< path +{ext =E<gt> $ext} >>.
local $^O = "unix";
joinext qw/x y z/ # => x.y.z
path +{ ext => joinext qw/x y z/ } # => .x.y.z
=head2 include (;$pkg)
Connects C<$pkg> (if it has not already been connected via C<use> or C<require>) and returns it. Without a parameter, uses C<$_>.
lib/A.pm file:
package A;
sub new { bless {@_}, shift }
1;
( run in 1.508 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )