This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
6c2cf127e997794981dc2d1d3ad95834ba54cbea
[perl5.git] / cpan / Perl-OSType / lib / Perl / OSType.pm
1 #
2 # This file is part of Perl-OSType
3 #
4 # This software is copyright (c) 2010 by David Golden.
5 #
6 # This is free software; you can redistribute it and/or modify it under
7 # the same terms as the Perl 5 programming language system itself.
8 #
9 use strict;
10 use warnings;
11 package Perl::OSType;
12 BEGIN {
13   $Perl::OSType::VERSION = '1.002';
14 }
15 # ABSTRACT: Map Perl operating system names to generic types
16
17 require Exporter;
18 our @ISA = qw(Exporter);
19
20 our %EXPORT_TAGS = (
21   all => [ qw( os_type is_os_type ) ]
22 );
23
24 our @EXPORT_OK = @{ $EXPORT_TAGS{all} };
25
26 # originally taken from Module::Build by Ken Williams et al.
27 my %OSTYPES = qw(
28   aix         Unix
29   bsdos       Unix
30   beos        Unix
31   dgux        Unix
32   dragonfly   Unix
33   dynixptx    Unix
34   freebsd     Unix
35   linux       Unix
36   haiku       Unix
37   hpux        Unix
38   iphoneos    Unix
39   irix        Unix
40   darwin      Unix
41   machten     Unix
42   midnightbsd Unix
43   mirbsd      Unix
44   next        Unix
45   openbsd     Unix
46   netbsd      Unix
47   dec_osf     Unix
48   nto         Unix
49   svr4        Unix
50   svr5        Unix
51   sco_sv      Unix
52   unicos      Unix
53   unicosmk    Unix
54   solaris     Unix
55   sunos       Unix
56   cygwin      Unix
57   os2         Unix
58   interix     Unix
59   gnu         Unix
60   gnukfreebsd Unix
61   nto         Unix
62   qnx         Unix
63
64   dos         Windows
65   MSWin32     Windows
66
67   os390       EBCDIC
68   os400       EBCDIC
69   posix-bc    EBCDIC
70   vmesa       EBCDIC
71
72   MacOS       MacOS
73   VMS         VMS
74   VOS         VOS
75   riscos      RiscOS
76   amigaos     Amiga
77   mpeix       MPEiX
78 );
79
80 sub os_type {
81   my ($os) = @_;
82   $os = $^O unless defined $os;
83   return $OSTYPES{ $os } || q{};
84 }
85
86 sub is_os_type {
87   my ($type, $os) = @_;
88   return unless $type;
89   $os = $^O unless defined $os;
90   return os_type($os) eq $type;
91 }
92
93 1;
94
95
96 =pod
97
98 =head1 NAME
99
100 Perl::OSType - Map Perl operating system names to generic types
101
102 =head1 VERSION
103
104 version 1.002
105
106 =head1 SYNOPSIS
107
108   use Perl::OSType ':all';
109
110   $current_type = os_type();
111   $other_type = os_type('dragonfly'); # gives 'Unix'
112
113 =head1 DESCRIPTION
114
115 Modules that provide OS-specific behaviors often need to know if
116 the current operating system matches a more generic type of
117 operating systems. For example, 'linux' is a type of 'Unix' operating system
118 and so is 'freebsd'.
119
120 This module provides a mapping between an operating system name as given by
121 C<$^O> and a more generic type.  The initial version is based on the OS type
122 mappings provided in L<Module::Build> and L<ExtUtils::CBuilder>.  (Thus,
123 Microsoft operating systems are given the type 'Windows' rather than 'Win32'.)
124
125 =head1 USAGE
126
127 No functions are exported by default. The export tag ":all" will export
128 all functions listed below.
129
130 =head2 os_type()
131
132   $os_type = os_type();
133   $os_type = os_type('MSWin32');
134
135 Returns a single, generic OS type for a given operating system name.  With no
136 arguments, returns the OS type for the current value of C<$^O>.  If the
137 operating system is not recognized, the function will return the empty string.
138
139 =head2 is_os_type()
140
141   $is_windows = is_os_type('Windows');
142   $is_unix    = is_os_type('Unix', 'dragonfly');
143
144 Given an OS type and OS name, returns true or false if the OS name is of the
145 given type.  As with C<os_type>, it will use the current operating system as a
146 default if no OS name is provided.
147
148 =head1 SEE ALSO
149
150 =over 4
151
152 =item *
153
154 L<Devel::CheckOS>
155
156 =back
157
158 =head1 AUTHOR
159
160 David Golden <dagolden@cpan.org>
161
162 =head1 COPYRIGHT AND LICENSE
163
164 This software is copyright (c) 2010 by David Golden.
165
166 This is free software; you can redistribute it and/or modify it under
167 the same terms as the Perl 5 programming language system itself.
168
169 =cut
170
171
172 __END__
173
174