1 |
#!/usr/local/bin/perl |
2 |
|
3 |
use Config; |
4 |
use File::Basename qw(&basename &dirname); |
5 |
use Cwd; |
6 |
|
7 |
# List explicitly here the variables you want Configure to |
8 |
# generate. Metaconfig only looks for shell variables, so you |
9 |
# have to mention them as if they were shell variables, not |
10 |
# %Config entries. Thus you write |
11 |
# $startperl |
12 |
# to ensure Configure will look for $Config{startperl}. |
13 |
|
14 |
# This forces PL files to create target in same directory as PL file. |
15 |
# This is so that make depend always knows where to find PL derivatives. |
16 |
$origdir = cwd; |
17 |
chdir(dirname($0)); |
18 |
$file = basename($0, '.PL'); |
19 |
$file .= '.com' if $^O eq 'VMS'; |
20 |
|
21 |
open OUT,">$file" or die "Can't create $file: $!"; |
22 |
|
23 |
print "Extracting $file (with variable substitutions)\n"; |
24 |
|
25 |
# In this section, perl variables will be expanded during extraction. |
26 |
# You can use $Config{...} to use Configure variables. |
27 |
|
28 |
print OUT <<"!GROK!THIS!"; |
29 |
$Config{'startperl'} |
30 |
eval 'exec perl -S \$0 "\$@"' |
31 |
if 0; |
32 |
!GROK!THIS! |
33 |
|
34 |
# In the following, perl variables are not expanded during extraction. |
35 |
|
36 |
print OUT <<'!NO!SUBS!'; |
37 |
|
38 |
############################################################################# |
39 |
# pod2usage -- command to print usage messages from embedded pod docs |
40 |
# |
41 |
# Copyright (c) 1996-2000 by Bradford Appleton. All rights reserved. |
42 |
# This file is part of "PodParser". PodParser is free software; |
43 |
# you can redistribute it and/or modify it under the same terms |
44 |
# as Perl itself. |
45 |
############################################################################# |
46 |
|
47 |
use strict; |
48 |
#use diagnostics; |
49 |
|
50 |
=head1 NAME |
51 |
|
52 |
pod2usage - print usage messages from embedded pod docs in files |
53 |
|
54 |
=head1 SYNOPSIS |
55 |
|
56 |
=over 12 |
57 |
|
58 |
=item B<pod2usage> |
59 |
|
60 |
[B<-help>] |
61 |
[B<-man>] |
62 |
[B<-exit>S< >I<exitval>] |
63 |
[B<-output>S< >I<outfile>] |
64 |
[B<-verbose> I<level>] |
65 |
[B<-pathlist> I<dirlist>] |
66 |
I<file> |
67 |
|
68 |
=back |
69 |
|
70 |
=head1 OPTIONS AND ARGUMENTS |
71 |
|
72 |
=over 8 |
73 |
|
74 |
=item B<-help> |
75 |
|
76 |
Print a brief help message and exit. |
77 |
|
78 |
=item B<-man> |
79 |
|
80 |
Print this command's manual page and exit. |
81 |
|
82 |
=item B<-exit> I<exitval> |
83 |
|
84 |
The exit status value to return. |
85 |
|
86 |
=item B<-output> I<outfile> |
87 |
|
88 |
The output file to print to. If the special names "-" or ">&1" or ">&STDOUT" |
89 |
are used then standard output is used. If ">&2" or ">&STDERR" is used then |
90 |
standard error is used. |
91 |
|
92 |
=item B<-verbose> I<level> |
93 |
|
94 |
The desired level of verbosity to use: |
95 |
|
96 |
1 : print SYNOPSIS only |
97 |
2 : print SYNOPSIS sections and any OPTIONS/ARGUMENTS sections |
98 |
3 : print the entire manpage (similar to running pod2text) |
99 |
|
100 |
=item B<-pathlist> I<dirlist> |
101 |
|
102 |
Specifies one or more directories to search for the input file if it |
103 |
was not supplied with an absolute path. Each directory path in the given |
104 |
list should be separated by a ':' on Unix (';' on MSWin32 and DOS). |
105 |
|
106 |
=item I<file> |
107 |
|
108 |
The pathname of a file containing pod documentation to be output in |
109 |
usage message format (defaults to standard input). |
110 |
|
111 |
=back |
112 |
|
113 |
=head1 DESCRIPTION |
114 |
|
115 |
B<pod2usage> will read the given input file looking for pod |
116 |
documentation and will print the corresponding usage message. |
117 |
If no input file is specified then standard input is read. |
118 |
|
119 |
B<pod2usage> invokes the B<pod2usage()> function in the B<Pod::Usage> |
120 |
module. Please see L<Pod::Usage/pod2usage()>. |
121 |
|
122 |
=head1 SEE ALSO |
123 |
|
124 |
L<Pod::Usage>, L<pod2text(1)> |
125 |
|
126 |
=head1 AUTHOR |
127 |
|
128 |
Please report bugs using L<http://rt.cpan.org>. |
129 |
|
130 |
Brad Appleton E<lt>bradapp@enteract.comE<gt> |
131 |
|
132 |
Based on code for B<pod2text(1)> written by |
133 |
Tom Christiansen E<lt>tchrist@mox.perl.comE<gt> |
134 |
|
135 |
=cut |
136 |
|
137 |
use Pod::Usage; |
138 |
use Getopt::Long; |
139 |
|
140 |
## Define options |
141 |
my %options = (); |
142 |
my @opt_specs = ( |
143 |
'help', |
144 |
'man', |
145 |
'exit=i', |
146 |
'output=s', |
147 |
'pathlist=s', |
148 |
'verbose=i', |
149 |
); |
150 |
|
151 |
## Parse options |
152 |
GetOptions(\%options, @opt_specs) || pod2usage(2); |
153 |
pod2usage(1) if ($options{help}); |
154 |
pod2usage(VERBOSE => 2) if ($options{man}); |
155 |
|
156 |
## Dont default to STDIN if connected to a terminal |
157 |
pod2usage(2) if ((@ARGV == 0) && (-t STDIN)); |
158 |
|
159 |
@ARGV = ('-') unless (@ARGV); |
160 |
if (@ARGV > 1) { |
161 |
print STDERR "pod2usage: Too many filenames given\n\n"; |
162 |
pod2usage(2); |
163 |
} |
164 |
|
165 |
my %usage = (); |
166 |
$usage{-input} = shift(@ARGV); |
167 |
$usage{-exitval} = $options{'exit'} if (defined $options{'exit'}); |
168 |
$usage{-output} = $options{'output'} if (defined $options{'output'}); |
169 |
$usage{-verbose} = $options{'verbose'} if (defined $options{'verbose'}); |
170 |
$usage{-pathlist} = $options{'pathlist'} if (defined $options{'pathlist'}); |
171 |
|
172 |
pod2usage(\%usage); |
173 |
|
174 |
|
175 |
!NO!SUBS! |
176 |
|
177 |
close OUT or die "Can't close $file: $!"; |
178 |
chmod 0755, $file or die "Can't reset permissions for $file: $!\n"; |
179 |
exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':'; |
180 |
chdir $origdir; |