The return value of setlocale must be copied away.
[p5sagit/p5-mst-13.2.git] / lib / File / Spec.pm
1 package File::Spec;
2
3 use strict;
4 use vars qw(@ISA $VERSION);
5
6 $VERSION = 0.82 ;
7
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");
16
17 1;
18 __END__
19
20 =head1 NAME
21
22 File::Spec - portably perform operations on file names
23
24 =head1 SYNOPSIS
25
26         use File::Spec;
27
28         $x=File::Spec->catfile('a', 'b', 'c');
29
30 which returns 'a/b/c' under Unix. Or:
31
32         use File::Spec::Functions;
33
34         $x = catfile('a', 'b', 'c');
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
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.
59
60 Since File::Spec is object oriented, subroutines should not called directly,
61 as in:
62
63         File::Spec::catfile('a','b');
64
65 but rather as class methods:
66
67         File::Spec->catfile('a','b');
68
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>,
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,
80 File::Spec::VMS, File::Spec::Functions, ExtUtils::MakeMaker
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
87 support by Charles Bailey <F<bailey@newman.upenn.edu>>.  OS/2 support by
88 Ilya Zakharevich <F<ilya@math.ohio-state.edu>>. Mac support by Paul Schinder
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.