1Path::Class(3)        User Contributed Perl Documentation       Path::Class(3)
2
3
4

NAME

6       Path::Class - Cross-platform path specification manipulation
7

VERSION

9       version 0.23
10

SYNOPSIS

12         use Path::Class;
13
14         my $dir  = dir('foo', 'bar');       # Path::Class::Dir object
15         my $file = file('bob', 'file.txt'); # Path::Class::File object
16
17         # Stringifies to 'foo/bar' on Unix, 'foo\bar' on Windows, etc.
18         print "dir: $dir\n";
19
20         # Stringifies to 'bob/file.txt' on Unix, 'bob\file.txt' on Windows
21         print "file: $file\n";
22
23         my $subdir  = $dir->subdir('baz');  # foo/bar/baz
24         my $parent  = $subdir->parent;      # foo/bar
25         my $parent2 = $parent->parent;      # foo
26
27         my $dir2 = $file->dir;              # bob
28
29         # Work with foreign paths
30         use Path::Class qw(foreign_file foreign_dir);
31         my $file = foreign_file('Mac', ':foo:file.txt');
32         print $file->dir;                   # :foo:
33         print $file->as_foreign('Win32');   # foo\file.txt
34
35         # Interact with the underlying filesystem:
36
37         # $dir_handle is an IO::Dir object
38         my $dir_handle = $dir->open or die "Can't read $dir: $!";
39
40         # $file_handle is an IO::File object
41         my $file_handle = $file->open($mode) or die "Can't read $file: $!";
42

DESCRIPTION

44       "Path::Class" is a module for manipulation of file and directory
45       specifications (strings describing their locations, like
46       '/home/ken/foo.txt' or 'C:\Windows\Foo.txt') in a cross-platform
47       manner.  It supports pretty much every platform Perl runs on, including
48       Unix, Windows, Mac, VMS, Epoc, Cygwin, OS/2, and NetWare.
49
50       The well-known module "File::Spec" also provides this service, but it's
51       sort of awkward to use well, so people sometimes avoid it, or use it in
52       a way that won't actually work properly on platforms significantly
53       different than the ones they've tested their code on.
54
55       In fact, "Path::Class" uses "File::Spec" internally, wrapping all the
56       unsightly details so you can concentrate on your application code.
57       Whereas "File::Spec" provides functions for some common path
58       manipulations, "Path::Class" provides an object-oriented model of the
59       world of path specifications and their underlying semantics.
60       "File::Spec" doesn't create any objects, and its classes represent the
61       different ways in which paths must be manipulated on various platforms
62       (not a very intuitive concept).  "Path::Class" creates objects
63       representing files and directories, and provides methods that relate
64       them to each other.  For instance, the following "File::Spec" code:
65
66        my $absolute = File::Spec->file_name_is_absolute(
67                         File::Spec->catfile( @dirs, $file )
68                       );
69
70       can be written using "Path::Class" as
71
72        my $absolute = Path::Class::File->new( @dirs, $file )->is_absolute;
73
74       or even as
75
76        my $absolute = file( @dirs, $file )->is_absolute;
77
78       Similar readability improvements should happen all over the place when
79       using "Path::Class".
80
81       Using "Path::Class" can help solve real problems in your code too - for
82       instance, how many people actually take the "volume" (like "C:" on
83       Windows) into account when writing "File::Spec"-using code?  I thought
84       not.  But if you use "Path::Class", your file and directory objects
85       will know what volumes they refer to and do the right thing.
86
87       The guts of the "Path::Class" code live in the "Path::Class::File" and
88       "Path::Class::Dir" modules, so please see those modules' documentation
89       for more details about how to use them.
90
91   EXPORT
92       The following functions are exported by default.
93
94       file
95           A synonym for "Path::Class::File->new".
96
97       dir A synonym for "Path::Class::Dir->new".
98
99       If you would like to prevent their export, you may explicitly pass an
100       empty list to perl's "use", i.e. "use Path::Class ()".
101
102       The following are exported only on demand.
103
104       foreign_file
105           A synonym for "Path::Class::File->new_foreign".
106
107       foreign_dir
108           A synonym for "Path::Class::Dir->new_foreign".
109

Notes on Cross-Platform Compatibility

111       Although it is much easier to write cross-platform-friendly code with
112       this module than with "File::Spec", there are still some issues to be
113       aware of.
114
115       ยท   Some platforms, notably VMS and some older versions of DOS (I
116           think), all filenames must have an extension.  Thus if you create a
117           file called foo/bar and then ask for a list of files in the
118           directory foo, you may find a file called bar. instead of the bar
119           you were expecting.  Thus it might be a good idea to use an
120           extension in the first place.
121

AUTHOR

123       Ken Williams, KWILLIAMS@cpan.org
124
126       Copyright (c) Ken Williams.  All rights reserved.
127
128       This library is free software; you can redistribute it and/or modify it
129       under the same terms as Perl itself.
130

SEE ALSO

132       Path::Class::Dir, Path::Class::File, File::Spec
133
134
135
136perl v5.12.3                      2011-04-22                    Path::Class(3)
Impressum