summaryrefslogtreecommitdiff
path: root/utils/perldoc.PL
diff options
context:
space:
mode:
authorNick Ing-Simmons <nik@tiuk.ti.com>1998-05-15 16:03:35 +0000
committerNick Ing-Simmons <nik@tiuk.ti.com>1998-05-15 16:03:35 +0000
commit157a3d9a879b77013095b55ff0a0418b88f31771 (patch)
tree9804b14da33dc2fed24bf930de9ce66c79cc2484 /utils/perldoc.PL
parent34e9701933920a1b91b5f5717935652f86850872 (diff)
parentebc58f1ae3702319e4a289ddf12b65aa41e620b0 (diff)
downloadperl-157a3d9a879b77013095b55ff0a0418b88f31771.tar.gz
Integrate win32
p4raw-id: //depot/ansiperl@987
Diffstat (limited to 'utils/perldoc.PL')
-rw-r--r--utils/perldoc.PL67
1 files changed, 61 insertions, 6 deletions
diff --git a/utils/perldoc.PL b/utils/perldoc.PL
index 80a721cab1..60983b29a4 100644
--- a/utils/perldoc.PL
+++ b/utils/perldoc.PL
@@ -50,6 +50,7 @@ if(@ARGV<1) {
die <<EOF;
Usage: $me [-h] [-r] [-i] [-v] [-t] [-u] [-m] [-l] [-F] [-X] PageName|ModuleName|ProgramName
$me -f PerlFunc
+ $me -q FAQKeywords
The -h option prints more help. Also try "perldoc perldoc" to get
aquainted with the system.
@@ -73,6 +74,7 @@ sub usage{
die <<EOF;
perldoc [options] PageName|ModuleName|ProgramName...
perldoc [options] -f BuiltinFunction
+perldoc [options] -q FAQRegex
Options:
-h Display this help message
@@ -81,12 +83,13 @@ Options:
-t Display pod using pod2text instead of pod2man and nroff
(-t is the default on win32)
-u Display unformatted pod text
- -m Display modules file in its entirety
- -l Display the modules file name
+ -m Display module's file in its entirety
+ -l Display the module's file name
-F Arguments are file names, not modules
-v Verbosely describe what's going on
-X use index if present (looks for pod.idx at $Config{archlib})
+
PageName|ModuleName...
is the name of a piece of documentation that you want to look at. You
may either give a descriptive name of the page (as in the case of
@@ -97,7 +100,11 @@ PageName|ModuleName...
BuiltinFunction
is the name of a perl function. Will extract documentation from
`perlfunc'.
-
+
+FAQRegex
+ is a regex. Will search perlfaq[1-9] for and extract any
+ questions that match.
+
Any switches in the PERLDOC environment variable will be used before the
command line arguments. The optional pod index file contains a list of
filenames, one per line.
@@ -110,7 +117,7 @@ use Text::ParseWords;
unshift(@ARGV,shellwords($ENV{"PERLDOC"}));
-getopts("mhtluvriFf:X") || usage;
+getopts("mhtluvriFf:Xq") || usage;
usage if $opt_h || $opt_h; # avoid -w warning
@@ -127,6 +134,8 @@ if ($opt_t) { require Pod::Text; import Pod::Text; }
if ($opt_f) {
@pages = ("perlfunc");
+} elsif ($opt_q) {
+ @pages = ("perlfaq1" .. "perlfaq9");
} else {
@pages = @ARGV;
}
@@ -359,6 +368,7 @@ if ($Is_MSWin32) {
if ($^O eq 'os2') {
require POSIX;
$tmp = POSIX::tmpnam();
+ unshift @pagers, 'less', 'cmd /c more <';
} else {
$tmp = "/tmp/perldoc1.$$";
}
@@ -398,14 +408,23 @@ if ($opt_f) {
++$found if /^\w/; # found descriptive text
}
if (@pod) {
+ my $lines = $ENV{LINES} || 24;
+
if ($opt_t) {
open(FORMATTER, "| pod2text") || die "Can't start filter";
print FORMATTER "=over 8\n\n";
print FORMATTER @pod;
print FORMATTER "=back\n";
close(FORMATTER);
- } else {
+ } elsif (@pod < $lines-2) {
print @pod;
+ } else {
+ foreach $pager (@pagers) {
+ open (PAGER, "| $pager") or next;
+ print PAGER @pod ;
+ close(PAGER) or next;
+ last;
+ }
}
} else {
die "No documentation for perl function `$opt_f' found\n";
@@ -413,6 +432,39 @@ if ($opt_f) {
exit;
}
+if ($opt_q) {
+ local @ARGV = @found; # I'm lazy, sue me.
+ my $found = 0;
+ my %found_in;
+ my @pod;
+
+ while (<>) {
+ if (/^=head2\s+.*$opt_q/oi) {
+ $found = 1;
+ push @pod, "=head1 Found in $ARGV\n\n" unless $found_in{$ARGV}++;
+ } elsif (/^=head2/) {
+ $found = 0;
+ }
+ next unless $found;
+ push @pod, $_;
+ }
+
+ if (@pod) {
+ if ($opt_t) {
+ open(FORMATTER, "| pod2text") || die "Can't start filter";
+ print FORMATTER "=over 8\n\n";
+ print FORMATTER @pod;
+ print FORMATTER "=back\n";
+ close(FORMATTER);
+ } else {
+ print @pod;
+ }
+ } else {
+ die "No documentation for perl function `$opt_f' found\n";
+ }
+ exit;
+}
+
foreach (@found) {
if($opt_t) {
@@ -546,7 +598,10 @@ command line arguments. C<perldoc> also searches directories
specified by the C<PERL5LIB> (or C<PERLLIB> if C<PERL5LIB> is not
defined) and C<PATH> environment variables.
(The latter is so that embedded pods for executables, such as
-C<perldoc> itself, are available.)
+C<perldoc> itself, are available.) C<perldoc> will use, in order of
+preference, the pager defined in C<PERLDOC_PAGER>, C<MANPAGER>, or
+C<PAGER> before trying to find a pager on its own. (C<MANPAGER> is not
+used if C<perldoc> was told to display plain text or unformatted pod.)
=head1 AUTHOR