summaryrefslogtreecommitdiff
path: root/lib/File/Spec/Native.pm
blob: ab9447099f992968852e7f18d9284500bd69998f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# vim: set ts=2 sts=2 sw=2 expandtab smarttab:
#
# This file is part of File-Spec-Native
#
# This software is copyright (c) 2011 by Randy Stauner.
#
# This is free software; you can redistribute it and/or modify it under
# the same terms as the Perl 5 programming language system itself.
#
use strict;
use warnings;

package File::Spec::Native;
# git description: v1.003-8-gd52fa9e

our $AUTHORITY = 'cpan:RWSTAUNER';
# ABSTRACT: Use native OS implementation of File::Spec from a subclass
$File::Spec::Native::VERSION = '1.004';
use File::Spec (); #core
our @ISA = qw(File::Spec);

# TODO: import?  -as => NATIVE

1;

__END__

=pod

=encoding UTF-8

=for :stopwords Randy Stauner ACKNOWLEDGEMENTS cpan testmatrix url annocpan anno bugtracker
rt cpants kwalitee diff irc mailto metadata placeholders metacpan

=head1 NAME

File::Spec::Native - Use native OS implementation of File::Spec from a subclass

=head1 VERSION

version 1.004

=head1 SYNOPSIS

  # This serves little purpose on its own but can be useful in some situations

  # For example:
  use Path::Class 0.24;

  # convert foreign file type into native type
  # without having to know what the current OS is
  foreign_file(Win32 => $win32_path)->as_foreign("Native");

  # or to build a file-spec dynamically (possibly taking the type from input):
  my $type = get_requested_file_spec(); # can return "Native"
  foreign_file($type => $file_path);

  # having $type be "Native" is an alternative to having to do:
  my $file = $type ? foreign_file($type, $file_path) : file($file_path);

=head1 DESCRIPTION

This module is a stupid hack to make the default L<File::Spec> behavior
available from a subclass.  This can be useful when using another module
that expects a subclass of L<File::Spec> but you want to use
the current, native OS format (automatically detected by L<File::Spec>).

For example: L<Path::Class/as_foreign> (as of version 0.24)
allows you to translate a L<Path::Class> object from one OS format to another.
However, there is no way to specify that you want to translate the path into
the current, native OS format without guessing at what that format is
(which may include peeking into C<@File::Spec::ISA>).

This module C<@ISA> L<File::Spec>.

=for test_synopsis my ($win32_path, $file_path);

=head1 SEE ALSO

=over 4

=item *

L<File::Spec>

=item *

L<Path::Class>

=item *

L<https://rt.cpan.org/Ticket/Display.html?id=49721>

=back

=head1 SUPPORT

=head2 Perldoc

You can find documentation for this module with the perldoc command.

  perldoc File::Spec::Native

=head2 Websites

The following websites have more information about this module, and may be of help to you. As always,
in addition to those websites please use your favorite search engine to discover more resources.

=over 4

=item *

MetaCPAN

A modern, open-source CPAN search engine, useful to view POD in HTML format.

L<http://metacpan.org/release/File-Spec-Native>

=back

=head2 Bugs / Feature Requests

Please report any bugs or feature requests by email to C<bug-file-spec-native at rt.cpan.org>, or through
the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=File-Spec-Native>. You will be automatically notified of any
progress on the request by the system.

=head2 Source Code


L<https://github.com/rwstauner/File-Spec-Native>

  git clone https://github.com/rwstauner/File-Spec-Native.git

=head1 AUTHOR

Randy Stauner <rwstauner@cpan.org>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Randy Stauner.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut