Commit | Line | Data |
270d1e39 |
1 | package File::Spec; |
2 | |
270d1e39 |
3 | use strict; |
cbc7acb0 |
4 | use vars qw(@ISA $VERSION); |
270d1e39 |
5 | |
5c609535 |
6 | $VERSION = '0.8'; |
270d1e39 |
7 | |
cbc7acb0 |
8 | my %module = (MacOS => 'Mac', |
9 | MSWin32 => 'Win32', |
10 | os2 => 'OS2', |
11 | VMS => 'VMS'); |
12 | |
13 | my $module = $module{$^O} || 'Unix'; |
14 | require "File/Spec/$module.pm"; |
15 | @ISA = ("File::Spec::$module"); |
270d1e39 |
16 | |
17 | 1; |
18 | __END__ |
19 | |
20 | =head1 NAME |
21 | |
22 | File::Spec - portably perform operations on file names |
23 | |
24 | =head1 SYNOPSIS |
25 | |
5c609535 |
26 | use File::Spec; |
270d1e39 |
27 | |
5c609535 |
28 | $x=File::Spec->catfile('a', 'b', 'c'); |
270d1e39 |
29 | |
5c609535 |
30 | which returns 'a/b/c' under Unix. Or: |
31 | |
32 | use File::Spec::Functions; |
33 | |
34 | $x = catfile('a', 'b', 'c'); |
270d1e39 |
35 | |
36 | =head1 DESCRIPTION |
37 | |
38 | This module is designed to support operations commonly performed on file |
39 | specifications (usually called "file names", but not to be confused with the |
40 | contents of a file, or Perl's file handles), such as concatenating several |
41 | directory and file names into a single path, or determining whether a path |
42 | is rooted. It is based on code directly taken from MakeMaker 5.17, code |
43 | written by Andreas KE<ouml>nig, Andy Dougherty, Charles Bailey, Ilya |
44 | Zakharevich, Paul Schinder, and others. |
45 | |
46 | Since these functions are different for most operating systems, each set of |
47 | OS specific routines is available in a separate module, including: |
48 | |
49 | File::Spec::Unix |
50 | File::Spec::Mac |
51 | File::Spec::OS2 |
52 | File::Spec::Win32 |
53 | File::Spec::VMS |
54 | |
55 | The module appropriate for the current OS is automatically loaded by |
5c609535 |
56 | File::Spec. Since some modules (like VMS) make use of facilities available |
57 | only under that OS, it may not be possible to load all modules under all |
58 | operating systems. |
270d1e39 |
59 | |
60 | Since File::Spec is object oriented, subroutines should not called directly, |
61 | as in: |
62 | |
63 | File::Spec::catfile('a','b'); |
5c609535 |
64 | |
270d1e39 |
65 | but rather as class methods: |
66 | |
67 | File::Spec->catfile('a','b'); |
68 | |
5c609535 |
69 | For simple uses, L<File::Spec::Functions> provides convenient functional |
70 | forms of these methods. |
71 | |
72 | For a list of available methods, please consult L<File::Spec::Unix>, |
73 | which contains the entire set, and which is inherited by the modules for |
74 | other platforms. For further information, please see L<File::Spec::Mac>, |
270d1e39 |
75 | L<File::Spec::OS2>, L<File::Spec::Win32>, or L<File::Spec::VMS>. |
76 | |
77 | =head1 SEE ALSO |
78 | |
79 | File::Spec::Unix, File::Spec::Mac, File::Spec::OS2, File::Spec::Win32, |
5c609535 |
80 | File::Spec::VMS, File::Spec::Functions, ExtUtils::MakeMaker |
270d1e39 |
81 | |
82 | =head1 AUTHORS |
83 | |
84 | Kenneth Albanowski <F<kjahds@kjahds.com>>, Andy Dougherty |
85 | <F<doughera@lafcol.lafayette.edu>>, Andreas KE<ouml>nig |
86 | <F<A.Koenig@franz.ww.TU-Berlin.DE>>, Tim Bunce <F<Tim.Bunce@ig.co.uk>>. VMS |
bd3fa61c |
87 | support by Charles Bailey <F<bailey@newman.upenn.edu>>. OS/2 support by |
270d1e39 |
88 | Ilya Zakharevich <F<ilya@math.ohio-state.edu>>. Mac support by Paul Schinder |
f9d788eb |
89 | <F<schinder@pobox.com>>. abs2rel() and rel2abs() written by |
90 | Shigio Yamaguchi <F<shigio@tamacom.com>>, modified by Barrie Slaymaker |
91 | <F<barries@slaysys.com>>. splitpath(), splitdir(), catpath() and catdir() |
92 | by Barrie Slaymaker. |