Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v8plus / man / man3 / File::Spec::Mac.3
CommitLineData
920dae64
AT
1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v
15.if n .sp
16..
17.de Vb \" Begin verbatim text
18.ft CW
19.nf
20.ne \\$1
21..
22.de Ve \" End verbatim text
23.ft R
24.fi
25..
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34.ie n \{\
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
43'br\}
44.el\{\
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
49'br\}
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
58..
59. nr % 0
60. rr F
61.\}
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69.\" Fear. Run. Save yourself. No user-serviceable parts.
70. \" fudge factors for nroff and troff
71.if n \{\
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
124. ds Th \o'LP'
125. ds ae ae
126. ds Ae AE
127.\}
128.rm #[ #] #H #V #F C
129.\" ========================================================================
130.\"
131.IX Title "File::Spec::Mac 3"
132.TH File::Spec::Mac 3 "2001-09-21" "perl v5.8.8" "Perl Programmers Reference Guide"
133.SH "NAME"
134File::Spec::Mac \- File::Spec for Mac OS (Classic)
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137.Vb 1
138\& require File::Spec::Mac; # Done internally by File::Spec if needed
139.Ve
140.SH "DESCRIPTION"
141.IX Header "DESCRIPTION"
142Methods for manipulating file specifications.
143.SH "METHODS"
144.IX Header "METHODS"
145.IP "canonpath" 2
146.IX Item "canonpath"
147On Mac \s-1OS\s0, there's nothing to be done. Returns what it's given.
148.IP "\fIcatdir()\fR" 2
149.IX Item "catdir()"
150Concatenate two or more directory names to form a path separated by colons
151(\*(L":\*(R") ending with a directory. Resulting paths are \fBrelative\fR by default,
152but can be forced to be absolute (but avoid this, see below). Automatically
153puts a trailing \*(L":\*(R" on the end of the complete path, because that's what's
154done in MacPerl's environment and helps to distinguish a file path from a
155directory path.
156.Sp
157\&\fB\s-1IMPORTANT\s0 \s-1NOTE:\s0\fR Beginning with version 1.3 of this module, the resulting
158path is relative by default and \fInot\fR absolute. This decision was made due
159to portability reasons. Since \f(CW\*(C`File::Spec\->catdir()\*(C'\fR returns relative paths
160on all other operating systems, it will now also follow this convention on Mac
161\&\s-1OS\s0. Note that this may break some existing scripts.
162.Sp
163The intended purpose of this routine is to concatenate \fIdirectory names\fR.
164But because of the nature of Macintosh paths, some additional possibilities
165are allowed to make using this routine give reasonable results for some
166common situations. In other words, you are also allowed to concatenate
167\&\fIpaths\fR instead of directory names (strictly speaking, a string like \*(L":a\*(R"
168is a path, but not a name, since it contains a punctuation character \*(L":\*(R").
169.Sp
170So, beside calls like
171.Sp
172.Vb 3
173\& catdir("a") = ":a:"
174\& catdir("a","b") = ":a:b:"
175\& catdir() = "" (special case)
176.Ve
177.Sp
178calls like the following
179.Sp
180.Vb 5
181\& catdir(":a:") = ":a:"
182\& catdir(":a","b") = ":a:b:"
183\& catdir(":a:","b") = ":a:b:"
184\& catdir(":a:",":b:") = ":a:b:"
185\& catdir(":") = ":"
186.Ve
187.Sp
188are allowed.
189.Sp
190Here are the rules that are used in \f(CW\*(C`catdir()\*(C'\fR; note that we try to be as
191compatible as possible to Unix:
192.RS 2
193.IP "1." 2
194The resulting path is relative by default, i.e. the resulting path will have a
195leading colon.
196.IP "2." 2
197A trailing colon is added automatically to the resulting path, to denote a
198directory.
199.IP "3." 2
200Generally, each argument has one leading \*(L":\*(R" and one trailing \*(L":\*(R"
201removed (if any). They are then joined together by a \*(L":\*(R". Special
202treatment applies for arguments denoting updir paths like \*(L"::lib:\*(R",
203see (4), or arguments consisting solely of colons (\*(L"colon paths\*(R"),
204see (5).
205.IP "4." 2
206When an updir path like \*(L":::lib::\*(R" is passed as argument, the number
207of directories to climb up is handled correctly, not removing leading
208or trailing colons when necessary. E.g.
209.Sp
210.Vb 2
211\& catdir(":::a","::b","c") = ":::a::b:c:"
212\& catdir(":::a::","::b","c") = ":::a:::b:c:"
213.Ve
214.IP "5." 2
215Adding a colon \*(L":\*(R" or empty string "" to a path at \fIany\fR position
216doesn't alter the path, i.e. these arguments are ignored. (When a "\*(L"
217is passed as the first argument, it has a special meaning, see
218(6)). This way, a colon \*(R":\*(L" is handled like a \*(R".\*(L" (curdir) on Unix,
219while an empty string \*(R"" is generally ignored (see
220\&\f(CW\*(C`Unix\->canonpath()\*(C'\fR ). Likewise, a \*(L"::\*(R" is handled like a \*(L"..\*(R"
221(updir), and a \*(L":::\*(R" is handled like a \*(L"../..\*(R" etc. E.g.
222.Sp
223.Vb 2
224\& catdir("a",":",":","b") = ":a:b:"
225\& catdir("a",":","::",":b") = ":a::b:"
226.Ve
227.IP "6." 2
228If the first argument is an empty string "" or is a volume name, i.e. matches
229the pattern /^[^:]+:/, the resulting path is \fBabsolute\fR.
230.IP "7." 2
231Passing an empty string "" as the first argument to \f(CW\*(C`catdir()\*(C'\fR is
232like passing\f(CW\*(C`File::Spec\->rootdir()\*(C'\fR as the first argument, i.e.
233.Sp
234.Vb 1
235\& catdir("","a","b") is the same as
236.Ve
237.Sp
238.Vb 1
239\& catdir(rootdir(),"a","b").
240.Ve
241.Sp
242This is true on Unix, where \f(CW\*(C`catdir("","a","b")\*(C'\fR yields \*(L"/a/b\*(R" and
243\&\f(CW\*(C`rootdir()\*(C'\fR is \*(L"/\*(R". Note that \f(CW\*(C`rootdir()\*(C'\fR on Mac \s-1OS\s0 is the startup
244volume, which is the closest in concept to Unix' \*(L"/\*(R". This should help
245to run existing scripts originally written for Unix.
246.IP "8." 2
247For absolute paths, some cleanup is done, to ensure that the volume
248name isn't immediately followed by updirs. This is invalid, because
249this would go beyond \*(L"root\*(R". Generally, these cases are handled like
250their Unix counterparts:
251.Sp
252.Vb 10
253\& Unix:
254\& Unix->catdir("","") = "/"
255\& Unix->catdir("",".") = "/"
256\& Unix->catdir("","..") = "/" # can't go beyond root
257\& Unix->catdir("",".","..","..","a") = "/a"
258\& Mac:
259\& Mac->catdir("","") = rootdir() # (e.g. "HD:")
260\& Mac->catdir("",":") = rootdir()
261\& Mac->catdir("","::") = rootdir() # can't go beyond root
262\& Mac->catdir("",":","::","::","a") = rootdir() . "a:" # (e.g. "HD:a:")
263.Ve
264.Sp
265However, this approach is limited to the first arguments following
266\&\*(L"root\*(R" (again, see \f(CW\*(C`Unix\->canonpath()\*(C'\fR ). If there are more
267arguments that move up the directory tree, an invalid path going
268beyond root can be created.
269.RE
270.RS 2
271.Sp
272As you've seen, you can force \f(CW\*(C`catdir()\*(C'\fR to create an absolute path
273by passing either an empty string or a path that begins with a volume
274name as the first argument. However, you are strongly encouraged not
275to do so, since this is done only for backward compatibility. Newer
276versions of File::Spec come with a method called \f(CW\*(C`catpath()\*(C'\fR (see
277below), that is designed to offer a portable solution for the creation
278of absolute paths. It takes volume, directory and file portions and
279returns an entire path. While \f(CW\*(C`catdir()\*(C'\fR is still suitable for the
280concatenation of \fIdirectory names\fR, you are encouraged to use
281\&\f(CW\*(C`catpath()\*(C'\fR to concatenate \fIvolume names\fR and \fIdirectory
282paths\fR. E.g.
283.Sp
284.Vb 2
285\& $dir = File::Spec->catdir("tmp","sources");
286\& $abs_path = File::Spec->catpath("MacintoshHD:", $dir,"");
287.Ve
288.Sp
289yields
290.Sp
291.Vb 1
292\& "MacintoshHD:tmp:sources:" .
293.Ve
294.RE
295.IP "catfile" 2
296.IX Item "catfile"
297Concatenate one or more directory names and a filename to form a
298complete path ending with a filename. Resulting paths are \fBrelative\fR
299by default, but can be forced to be absolute (but avoid this).
300.Sp
301\&\fB\s-1IMPORTANT\s0 \s-1NOTE:\s0\fR Beginning with version 1.3 of this module, the
302resulting path is relative by default and \fInot\fR absolute. This
303decision was made due to portability reasons. Since
304\&\f(CW\*(C`File::Spec\->catfile()\*(C'\fR returns relative paths on all other
305operating systems, it will now also follow this convention on Mac \s-1OS\s0.
306Note that this may break some existing scripts.
307.Sp
308The last argument is always considered to be the file portion. Since
309\&\f(CW\*(C`catfile()\*(C'\fR uses \f(CW\*(C`catdir()\*(C'\fR (see above) for the concatenation of the
310directory portions (if any), the following with regard to relative and
311absolute paths is true:
312.Sp
313.Vb 2
314\& catfile("") = ""
315\& catfile("file") = "file"
316.Ve
317.Sp
318but
319.Sp
320.Vb 3
321\& catfile("","") = rootdir() # (e.g. "HD:")
322\& catfile("","file") = rootdir() . file # (e.g. "HD:file")
323\& catfile("HD:","file") = "HD:file"
324.Ve
325.Sp
326This means that \f(CW\*(C`catdir()\*(C'\fR is called only when there are two or more
327arguments, as one might expect.
328.Sp
329Note that the leading \*(L":\*(R" is removed from the filename, so that
330.Sp
331.Vb 1
332\& catfile("a","b","file") = ":a:b:file" and
333.Ve
334.Sp
335.Vb 1
336\& catfile("a","b",":file") = ":a:b:file"
337.Ve
338.Sp
339give the same answer.
340.Sp
341To concatenate \fIvolume names\fR, \fIdirectory paths\fR and \fIfilenames\fR,
342you are encouraged to use \f(CW\*(C`catpath()\*(C'\fR (see below).
343.IP "curdir" 2
344.IX Item "curdir"
345Returns a string representing the current directory. On Mac \s-1OS\s0, this is \*(L":\*(R".
346.IP "devnull" 2
347.IX Item "devnull"
348Returns a string representing the null device. On Mac \s-1OS\s0, this is \*(L"Dev:Null\*(R".
349.IP "rootdir" 2
350.IX Item "rootdir"
351Returns a string representing the root directory. Under MacPerl,
352returns the name of the startup volume, since that's the closest in
353concept, although other volumes aren't rooted there. The name has a
354trailing \*(L":\*(R", because that's the correct specification for a volume
355name on Mac \s-1OS\s0.
356.Sp
357If Mac::Files could not be loaded, the empty string is returned.
358.IP "tmpdir" 2
359.IX Item "tmpdir"
360Returns the contents of \f(CW$ENV\fR{\s-1TMPDIR\s0}, if that directory exits or the
361current working directory otherwise. Under MacPerl, \f(CW$ENV\fR{\s-1TMPDIR\s0} will
362contain a path like \*(L"MacintoshHD:Temporary Items:\*(R", which is a hidden
363directory on your startup volume.
364.IP "updir" 2
365.IX Item "updir"
366Returns a string representing the parent directory. On Mac \s-1OS\s0, this is \*(L"::\*(R".
367.IP "file_name_is_absolute" 2
368.IX Item "file_name_is_absolute"
369Takes as argument a path and returns true, if it is an absolute path.
370If the path has a leading \*(L":\*(R", it's a relative path. Otherwise, it's an
371absolute path, unless the path doesn't contain any colons, i.e. it's a name
372like \*(L"a\*(R". In this particular case, the path is considered to be relative
373(i.e. it is considered to be a filename). Use \*(L":\*(R" in the appropriate place
374in the path if you want to distinguish unambiguously. As a special case,
375the filename '' is always considered to be absolute. Note that with version
3761.2 of File::Spec::Mac, this does no longer consult the local filesystem.
377.Sp
378E.g.
379.Sp
380.Vb 4
381\& File::Spec->file_name_is_absolute("a"); # false (relative)
382\& File::Spec->file_name_is_absolute(":a:b:"); # false (relative)
383\& File::Spec->file_name_is_absolute("MacintoshHD:"); # true (absolute)
384\& File::Spec->file_name_is_absolute(""); # true (absolute)
385.Ve
386.IP "path" 2
387.IX Item "path"
388Returns the null list for the MacPerl application, since the concept is
389usually meaningless under Mac \s-1OS\s0. But if you're using the MacPerl tool under
390\&\s-1MPW\s0, it gives back \f(CW$ENV\fR{Commands} suitably split, as is done in
391:lib:ExtUtils:MM_Mac.pm.
392.IP "splitpath" 2
393.IX Item "splitpath"
394.Vb 2
395\& ($volume,$directories,$file) = File::Spec->splitpath( $path );
396\& ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
397.Ve
398.Sp
399Splits a path into volume, directory, and filename portions.
400.Sp
401On Mac \s-1OS\s0, assumes that the last part of the path is a filename unless
402\&\f(CW$no_file\fR is true or a trailing separator \*(L":\*(R" is present.
403.Sp
404The volume portion is always returned with a trailing \*(L":\*(R". The directory portion
405is always returned with a leading (to denote a relative path) and a trailing \*(L":\*(R"
406(to denote a directory). The file portion is always returned \fIwithout\fR a leading \*(L":\*(R".
407Empty portions are returned as empty string ''.
408.Sp
409The results can be passed to \f(CW\*(C`catpath()\*(C'\fR to get back a path equivalent to
410(usually identical to) the original path.
411.IP "splitdir" 2
412.IX Item "splitdir"
413The opposite of \f(CW\*(C`catdir()\*(C'\fR.
414.Sp
415.Vb 1
416\& @dirs = File::Spec->splitdir( $directories );
417.Ve
418.Sp
419$directories should be only the directory portion of the path on systems
420that have the concept of a volume or that have path syntax that differentiates
421files from directories. Consider using \f(CW\*(C`splitpath()\*(C'\fR otherwise.
422.Sp
423Unlike just splitting the directories on the separator, empty directory names
424(\f(CW""\fR) can be returned. Since \f(CW\*(C`catdir()\*(C'\fR on Mac \s-1OS\s0 always appends a trailing
425colon to distinguish a directory path from a file path, a single trailing colon
426will be ignored, i.e. there's no empty directory name after it.
427.Sp
428Hence, on Mac \s-1OS\s0, both
429.Sp
430.Vb 2
431\& File::Spec->splitdir( ":a:b::c:" ); and
432\& File::Spec->splitdir( ":a:b::c" );
433.Ve
434.Sp
435yield:
436.Sp
437.Vb 1
438\& ( "a", "b", "::", "c")
439.Ve
440.Sp
441while
442.Sp
443.Vb 1
444\& File::Spec->splitdir( ":a:b::c::" );
445.Ve
446.Sp
447yields:
448.Sp
449.Vb 1
450\& ( "a", "b", "::", "c", "::")
451.Ve
452.IP "catpath" 2
453.IX Item "catpath"
454.Vb 1
455\& $path = File::Spec->catpath($volume,$directory,$file);
456.Ve
457.Sp
458Takes volume, directory and file portions and returns an entire path. On Mac \s-1OS\s0,
459\&\f(CW$volume\fR, \f(CW$directory\fR and \f(CW$file\fR are concatenated. A ':' is inserted if need be. You
460may pass an empty string for each portion. If all portions are empty, the empty
461string is returned. If \f(CW$volume\fR is empty, the result will be a relative path,
462beginning with a ':'. If \f(CW$volume\fR and \f(CW$directory\fR are empty, a leading \*(L":\*(R" (if any)
463is removed form \f(CW$file\fR and the remainder is returned. If \f(CW$file\fR is empty, the
464resulting path will have a trailing ':'.
465.IP "abs2rel" 2
466.IX Item "abs2rel"
467Takes a destination path and an optional base path and returns a relative path
468from the base path to the destination path:
469.Sp
470.Vb 2
471\& $rel_path = File::Spec->abs2rel( $path ) ;
472\& $rel_path = File::Spec->abs2rel( $path, $base ) ;
473.Ve
474.Sp
475Note that both paths are assumed to have a notation that distinguishes a
476directory path (with trailing ':') from a file path (without trailing ':').
477.Sp
478If \f(CW$base\fR is not present or '', then the current working directory is used.
479If \f(CW$base\fR is relative, then it is converted to absolute form using \f(CW\*(C`rel2abs()\*(C'\fR.
480This means that it is taken to be relative to the current working directory.
481.Sp
482If \f(CW$path\fR and \f(CW$base\fR appear to be on two different volumes, we will not
483attempt to resolve the two paths, and we will instead simply return
484\&\f(CW$path\fR. Note that previous versions of this module ignored the volume
485of \f(CW$base\fR, which resulted in garbage results part of the time.
486.Sp
487If \f(CW$base\fR doesn't have a trailing colon, the last element of \f(CW$base\fR is
488assumed to be a filename. This filename is ignored. Otherwise all path
489components are assumed to be directories.
490.Sp
491If \f(CW$path\fR is relative, it is converted to absolute form using \f(CW\*(C`rel2abs()\*(C'\fR.
492This means that it is taken to be relative to the current working directory.
493.Sp
494Based on code written by Shigio Yamaguchi.
495.IP "rel2abs" 2
496.IX Item "rel2abs"
497Converts a relative path to an absolute path:
498.Sp
499.Vb 2
500\& $abs_path = File::Spec->rel2abs( $path ) ;
501\& $abs_path = File::Spec->rel2abs( $path, $base ) ;
502.Ve
503.Sp
504Note that both paths are assumed to have a notation that distinguishes a
505directory path (with trailing ':') from a file path (without trailing ':').
506.Sp
507If \f(CW$base\fR is not present or '', then \f(CW$base\fR is set to the current working
508directory. If \f(CW$base\fR is relative, then it is converted to absolute form
509using \f(CW\*(C`rel2abs()\*(C'\fR. This means that it is taken to be relative to the
510current working directory.
511.Sp
512If \f(CW$base\fR doesn't have a trailing colon, the last element of \f(CW$base\fR is
513assumed to be a filename. This filename is ignored. Otherwise all path
514components are assumed to be directories.
515.Sp
516If \f(CW$path\fR is already absolute, it is returned and \f(CW$base\fR is ignored.
517.Sp
518Based on code written by Shigio Yamaguchi.
519.SH "AUTHORS"
520.IX Header "AUTHORS"
521See the authors list in \fIFile::Spec\fR. Mac \s-1OS\s0 support by Paul Schinder
522<schinder@pobox.com> and Thomas Wegner <wegner_thomas@yahoo.com>.
523.SH "COPYRIGHT"
524.IX Header "COPYRIGHT"
525Copyright (c) 2004 by the Perl 5 Porters. All rights reserved.
526.PP
527This program is free software; you can redistribute it and/or modify
528it under the same terms as Perl itself.
529.SH "SEE ALSO"
530.IX Header "SEE ALSO"
531See File::Spec and File::Spec::Unix. This package overrides the
532implementation of these methods, not the semantics.