e31c31ef1b981b07bfa7d9c741045d3ad2961aaf
[perl.git] / dist / PathTools / lib / File / Spec / Functions.pm
1 package File::Spec::Functions;
2
3 use File::Spec;
4 use strict;
5
6 use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
7
8 $VERSION = '3.59';
9 $VERSION =~ tr/_//d;
10
11 require Exporter;
12
13 @ISA = qw(Exporter);
14
15 @EXPORT = qw(
16         canonpath
17         catdir
18         catfile
19         curdir
20         rootdir
21         updir
22         no_upwards
23         file_name_is_absolute
24         path
25 );
26
27 @EXPORT_OK = qw(
28         devnull
29         tmpdir
30         splitpath
31         splitdir
32         catpath
33         abs2rel
34         rel2abs
35         case_tolerant
36 );
37
38 %EXPORT_TAGS = ( ALL => [ @EXPORT_OK, @EXPORT ] );
39
40 require File::Spec::Unix;
41 my %udeps = (
42     canonpath => [],
43     catdir => [qw(canonpath)],
44     catfile => [qw(canonpath catdir)],
45     case_tolerant => [],
46     curdir => [],
47     devnull => [],
48     rootdir => [],
49     updir => [],
50 );
51
52 foreach my $meth (@EXPORT, @EXPORT_OK) {
53     my $sub = File::Spec->can($meth);
54     no strict 'refs';
55     if (exists($udeps{$meth}) && $sub == File::Spec::Unix->can($meth) &&
56             !(grep {
57                 File::Spec->can($_) != File::Spec::Unix->can($_)
58             } @{$udeps{$meth}}) &&
59             defined(&{"File::Spec::Unix::_fn_$meth"})) {
60         *{$meth} = \&{"File::Spec::Unix::_fn_$meth"};
61     } else {
62         *{$meth} = sub {&$sub('File::Spec', @_)};
63     }
64 }
65
66
67 1;
68 __END__
69
70 =head1 NAME
71
72 File::Spec::Functions - portably perform operations on file names
73
74 =head1 SYNOPSIS
75
76         use File::Spec::Functions;
77         $x = catfile('a','b');
78
79 =head1 DESCRIPTION
80
81 This module exports convenience functions for all of the class methods
82 provided by File::Spec.
83
84 For a reference of available functions, please consult L<File::Spec::Unix>,
85 which contains the entire set, and which is inherited by the modules for
86 other platforms. For further information, please see L<File::Spec::Mac>,
87 L<File::Spec::OS2>, L<File::Spec::Win32>, or L<File::Spec::VMS>.
88
89 =head2 Exports
90
91 The following functions are exported by default.
92
93         canonpath
94         catdir
95         catfile
96         curdir
97         rootdir
98         updir
99         no_upwards
100         file_name_is_absolute
101         path
102
103
104 The following functions are exported only by request.
105
106         devnull
107         tmpdir
108         splitpath
109         splitdir
110         catpath
111         abs2rel
112         rel2abs
113         case_tolerant
114
115 All the functions may be imported using the C<:ALL> tag.
116
117 =head1 COPYRIGHT
118
119 Copyright (c) 2004 by the Perl 5 Porters.  All rights reserved.
120
121 This program is free software; you can redistribute it and/or modify
122 it under the same terms as Perl itself.
123
124 =head1 SEE ALSO
125
126 File::Spec, File::Spec::Unix, File::Spec::Mac, File::Spec::OS2,
127 File::Spec::Win32, File::Spec::VMS, ExtUtils::MakeMaker
128
129 =cut
130