Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

719 lines
18 KiB

  1. @rem = '--*-Perl-*--
  2. @echo off
  3. if "%OS%" == "Windows_NT" goto WinNT
  4. perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
  5. goto endofperl
  6. :WinNT
  7. perl -x -S "%0" %*
  8. if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
  9. if %errorlevel% == 9009 echo You do not have Perl in your PATH.
  10. goto endofperl
  11. @rem ';
  12. #!perl
  13. #line 14
  14. eval 'exec P:\Apps\ActivePerl\temp\bin\MSWin32-x86-object\perl.exe -S $0 ${1+"$@"}'
  15. if 0;
  16. use strict;
  17. my @pagers = ();
  18. push @pagers, "more /e" if -x "more /e";
  19. #
  20. # Perldoc revision #1 -- look up a piece of documentation in .pod format that
  21. # is embedded in the perl installation tree.
  22. #
  23. # This is not to be confused with Tom Christianson's perlman, which is a
  24. # man replacement, written in perl. This perldoc is strictly for reading
  25. # the perl manuals, though it too is written in perl.
  26. if (@ARGV<1) {
  27. my $me = $0; # Editing $0 is unportable
  28. $me =~ s,.*/,,;
  29. die <<EOF;
  30. Usage: $me [-h] [-r] [-i] [-v] [-t] [-u] [-m] [-l] [-F] [-X] PageName|ModuleName|ProgramName
  31. $me -f PerlFunc
  32. $me -q FAQKeywords
  33. The -h option prints more help. Also try "perldoc perldoc" to get
  34. aquainted with the system.
  35. EOF
  36. }
  37. use Getopt::Std;
  38. use Config '%Config';
  39. my @global_found = ();
  40. my $global_target = "";
  41. my $Is_VMS = $^O eq 'VMS';
  42. my $Is_MSWin32 = $^O eq 'MSWin32';
  43. my $Is_Dos = $^O eq 'dos';
  44. sub usage{
  45. warn "@_\n" if @_;
  46. # Erase evidence of previous errors (if any), so exit status is simple.
  47. $! = 0;
  48. die <<EOF;
  49. perldoc [options] PageName|ModuleName|ProgramName...
  50. perldoc [options] -f BuiltinFunction
  51. perldoc [options] -q FAQRegex
  52. Options:
  53. -h Display this help message
  54. -r Recursive search (slow)
  55. -i Ignore case
  56. -t Display pod using pod2text instead of pod2man and nroff
  57. (-t is the default on win32)
  58. -u Display unformatted pod text
  59. -m Display module's file in its entirety
  60. -l Display the module's file name
  61. -F Arguments are file names, not modules
  62. -v Verbosely describe what's going on
  63. -X use index if present (looks for pod.idx at $Config{archlib})
  64. -q Search the text of questions (not answers) in perlfaq[1-9]
  65. PageName|ModuleName...
  66. is the name of a piece of documentation that you want to look at. You
  67. may either give a descriptive name of the page (as in the case of
  68. `perlfunc') the name of a module, either like `Term::Info',
  69. `Term/Info', the partial name of a module, like `info', or
  70. `makemaker', or the name of a program, like `perldoc'.
  71. BuiltinFunction
  72. is the name of a perl function. Will extract documentation from
  73. `perlfunc'.
  74. FAQRegex
  75. is a regex. Will search perlfaq[1-9] for and extract any
  76. questions that match.
  77. Any switches in the PERLDOC environment variable will be used before the
  78. command line arguments. The optional pod index file contains a list of
  79. filenames, one per line.
  80. EOF
  81. }
  82. if (defined $ENV{"PERLDOC"}) {
  83. require Text::ParseWords;
  84. unshift(@ARGV, Text::ParseWords::shellwords($ENV{"PERLDOC"}));
  85. }
  86. use vars qw( $opt_m $opt_h $opt_t $opt_l $opt_u $opt_v $opt_r $opt_i $opt_F $opt_f $opt_X $opt_q );
  87. getopts("mhtluvriFf:Xq:") || usage;
  88. usage if $opt_h;
  89. my $podidx;
  90. if ($opt_X) {
  91. $podidx = "$Config{'archlib'}/pod.idx";
  92. $podidx = "" unless -f $podidx && -r _ && -M _ <= 7;
  93. }
  94. if ((my $opts = do{ local $^W; $opt_t + $opt_u + $opt_m + $opt_l }) > 1) {
  95. usage("only one of -t, -u, -m or -l")
  96. }
  97. elsif ($Is_MSWin32
  98. || $Is_Dos
  99. || !(exists $ENV{TERM} && $ENV{TERM} !~ /dumb|emacs|none|unknown/i))
  100. {
  101. $opt_t = 1 unless $opts
  102. }
  103. if ($opt_t) { require Pod::Text; import Pod::Text; }
  104. my @pages;
  105. if ($opt_f) {
  106. @pages = ("perlfunc");
  107. }
  108. elsif ($opt_q) {
  109. @pages = ("perlfaq1" .. "perlfaq9");
  110. }
  111. else {
  112. @pages = @ARGV;
  113. }
  114. # Does this look like a module or extension directory?
  115. if (-f "Makefile.PL") {
  116. # Add ., lib and blib/* libs to @INC (if they exist)
  117. unshift(@INC, '.');
  118. unshift(@INC, 'lib') if -d 'lib';
  119. require ExtUtils::testlib;
  120. }
  121. sub containspod {
  122. my($file, $readit) = @_;
  123. return 1 if !$readit && $file =~ /\.pod$/i;
  124. local($_);
  125. open(TEST,"<$file");
  126. while (<TEST>) {
  127. if (/^=head/) {
  128. close(TEST);
  129. return 1;
  130. }
  131. }
  132. close(TEST);
  133. return 0;
  134. }
  135. sub minus_f_nocase {
  136. my($dir,$file) = @_;
  137. my $path = join('/',$dir,$file);
  138. return $path if -f $path and -r _;
  139. if (!$opt_i or $Is_VMS or $Is_MSWin32 or $Is_Dos or $^O eq 'os2') {
  140. # on a case-forgiving file system or if case is important
  141. # that is it all we can do
  142. warn "Ignored $path: unreadable\n" if -f _;
  143. return '';
  144. }
  145. local *DIR;
  146. local($")="/";
  147. my @p = ($dir);
  148. my($p,$cip);
  149. foreach $p (split(/\//, $file)){
  150. my $try = "@p/$p";
  151. stat $try;
  152. if (-d _) {
  153. push @p, $p;
  154. if ( $p eq $global_target) {
  155. my $tmp_path = join ('/', @p);
  156. my $path_f = 0;
  157. for (@global_found) {
  158. $path_f = 1 if $_ eq $tmp_path;
  159. }
  160. push (@global_found, $tmp_path) unless $path_f;
  161. print STDERR "Found as @p but directory\n" if $opt_v;
  162. }
  163. }
  164. elsif (-f _ && -r _) {
  165. return $try;
  166. }
  167. elsif (-f _) {
  168. warn "Ignored $try: unreadable\n";
  169. }
  170. else {
  171. my $found=0;
  172. my $lcp = lc $p;
  173. opendir DIR, "@p";
  174. while ($cip=readdir(DIR)) {
  175. if (lc $cip eq $lcp){
  176. $found++;
  177. last;
  178. }
  179. }
  180. closedir DIR;
  181. return "" unless $found;
  182. push @p, $cip;
  183. return "@p" if -f "@p" and -r _;
  184. warn "Ignored @p: unreadable\n" if -f _;
  185. }
  186. }
  187. return "";
  188. }
  189. sub check_file {
  190. my($dir,$file) = @_;
  191. if ($opt_m) {
  192. return minus_f_nocase($dir,$file);
  193. }
  194. else {
  195. my $path = minus_f_nocase($dir,$file);
  196. return $path if length $path and containspod($path);
  197. }
  198. return "";
  199. }
  200. sub searchfor {
  201. my($recurse,$s,@dirs) = @_;
  202. $s =~ s!::!/!g;
  203. $s = VMS::Filespec::unixify($s) if $Is_VMS;
  204. return $s if -f $s && containspod($s);
  205. printf STDERR "Looking for $s in @dirs\n" if $opt_v;
  206. my $ret;
  207. my $i;
  208. my $dir;
  209. $global_target = (split('/', $s))[-1];
  210. for ($i=0; $i<@dirs; $i++) {
  211. $dir = $dirs[$i];
  212. ($dir = VMS::Filespec::unixpath($dir)) =~ s!/$!! if $Is_VMS;
  213. if ( ( $ret = check_file $dir,"$s.pod")
  214. or ( $ret = check_file $dir,"$s.pm")
  215. or ( $ret = check_file $dir,$s)
  216. or ( $Is_VMS and
  217. $ret = check_file $dir,"$s.com")
  218. or ( $^O eq 'os2' and
  219. $ret = check_file $dir,"$s.cmd")
  220. or ( ($Is_MSWin32 or $Is_Dos or $^O eq 'os2') and
  221. $ret = check_file $dir,"$s.bat")
  222. or ( $ret = check_file "$dir/pod","$s.pod")
  223. or ( $ret = check_file "$dir/pod",$s)
  224. ) {
  225. return $ret;
  226. }
  227. if ($recurse) {
  228. opendir(D,$dir);
  229. my @newdirs = map "$dir/$_", grep {
  230. not /^\.\.?$/ and
  231. not /^auto$/ and # save time! don't search auto dirs
  232. -d "$dir/$_"
  233. } readdir D;
  234. closedir(D);
  235. next unless @newdirs;
  236. @newdirs = map((s/.dir$//,$_)[1],@newdirs) if $Is_VMS;
  237. print STDERR "Also looking in @newdirs\n" if $opt_v;
  238. push(@dirs,@newdirs);
  239. }
  240. }
  241. return ();
  242. }
  243. sub filter_nroff {
  244. my @data = split /\n{2,}/, shift;
  245. shift @data while @data and $data[0] !~ /\S/; # Go to header
  246. shift @data if @data and $data[0] =~ /Contributed\s+Perl/; # Skip header
  247. pop @data if @data and $data[-1] =~ /^\w/; # Skip footer, like
  248. # 28/Jan/99 perl 5.005, patch 53 1
  249. join "\n\n", @data;
  250. }
  251. sub printout {
  252. my ($file, $tmp, $filter) = @_;
  253. my $err;
  254. if ($opt_t) {
  255. open(TMP,">>$tmp")
  256. or warn("Can't open $tmp: $!"), return;
  257. Pod::Text::pod2text($file,*TMP);
  258. close TMP;
  259. }
  260. elsif (not $opt_u) {
  261. my $cmd = "pod2man --lax $file | nroff -man";
  262. $cmd .= " | col -x" if $^O =~ /hpux/;
  263. my $rslt = `$cmd`;
  264. $rslt = filter_nroff($rslt) if $filter;
  265. unless (($err = $?)) {
  266. open(TMP,">>$tmp") or warn("Can't open $tmp: $!"), return;
  267. print TMP $rslt;
  268. close TMP;
  269. }
  270. }
  271. if ($opt_u or $err or -z $tmp) {
  272. open(OUT,">>$tmp") or warn("Can't open $tmp: $!"), return;
  273. open(IN,"<$file") or warn("Can't open $file: $!"), return;
  274. my $cut = 1;
  275. while (<IN>) {
  276. $cut = $1 eq 'cut' if /^=(\w+)/;
  277. next if $cut;
  278. print OUT;
  279. }
  280. close IN;
  281. close OUT;
  282. }
  283. }
  284. sub page {
  285. my ($tmp, $no_tty, @pagers) = @_;
  286. if ($no_tty) {
  287. open(TMP,"<$tmp") or warn("Can't open $tmp: $!"), return;
  288. print while <TMP>;
  289. close TMP;
  290. }
  291. else {
  292. foreach my $pager (@pagers) {
  293. system("$pager $tmp") or last;
  294. }
  295. }
  296. }
  297. sub cleanup {
  298. my @files = @_;
  299. for (@files) {
  300. 1 while unlink($_); #Possibly pointless VMSism
  301. }
  302. }
  303. sub safe_exit {
  304. my ($val, @files) = @_;
  305. cleanup(@files);
  306. exit $val;
  307. }
  308. sub safe_die {
  309. my ($msg, @files) = @_;
  310. cleanup(@files);
  311. die $msg;
  312. }
  313. my @found;
  314. foreach (@pages) {
  315. if ($podidx && open(PODIDX, $podidx)) {
  316. my $searchfor = $_;
  317. local($_);
  318. $searchfor =~ s,::,/,g;
  319. print STDERR "Searching for '$searchfor' in $podidx\n" if $opt_v;
  320. while (<PODIDX>) {
  321. chomp;
  322. push(@found, $_) if m,/$searchfor(?:\.(?:pod|pm))?$,i;
  323. }
  324. close(PODIDX);
  325. next;
  326. }
  327. print STDERR "Searching for $_\n" if $opt_v;
  328. # We must look both in @INC for library modules and in PATH
  329. # for executables, like h2xs or perldoc itself.
  330. my @searchdirs = @INC;
  331. if ($opt_F) {
  332. next unless -r;
  333. push @found, $_ if $opt_m or containspod($_);
  334. next;
  335. }
  336. unless ($opt_m) {
  337. if ($Is_VMS) {
  338. my($i,$trn);
  339. for ($i = 0; $trn = $ENV{'DCL$PATH;'.$i}; $i++) {
  340. push(@searchdirs,$trn);
  341. }
  342. push(@searchdirs,'perl_root:[lib.pod]') # installed pods
  343. }
  344. else {
  345. push(@searchdirs, grep(-d, split($Config{path_sep},
  346. $ENV{'PATH'})));
  347. }
  348. }
  349. my @files = searchfor(0,$_,@searchdirs);
  350. if (@files) {
  351. print STDERR "Found as @files\n" if $opt_v;
  352. }
  353. else {
  354. # no match, try recursive search
  355. @searchdirs = grep(!/^\.$/,@INC);
  356. @files= searchfor(1,$_,@searchdirs) if $opt_r;
  357. if (@files) {
  358. print STDERR "Loosely found as @files\n" if $opt_v;
  359. }
  360. else {
  361. print STDERR "No documentation found for \"$_\".\n";
  362. if (@global_found) {
  363. print STDERR "However, try\n";
  364. for my $dir (@global_found) {
  365. opendir(DIR, $dir) or die "$!";
  366. while (my $file = readdir(DIR)) {
  367. next if ($file =~ /^\./);
  368. $file =~ s/\.(pm|pod)$//;
  369. print STDERR "\tperldoc $_\::$file\n";
  370. }
  371. closedir DIR;
  372. }
  373. }
  374. }
  375. }
  376. push(@found,@files);
  377. }
  378. if (!@found) {
  379. exit ($Is_VMS ? 98962 : 1);
  380. }
  381. if ($opt_l) {
  382. print join("\n", @found), "\n";
  383. exit;
  384. }
  385. my $lines = $ENV{LINES} || 24;
  386. my $no_tty;
  387. if (! -t STDOUT) { $no_tty = 1 }
  388. # until here we could simply exit or die
  389. # now we create temporary files that we have to clean up
  390. # namely $tmp, $buffer
  391. my $tmp;
  392. my $buffer;
  393. if ($Is_MSWin32) {
  394. $tmp = "$ENV{TEMP}\\perldoc1.$$";
  395. $buffer = "$ENV{TEMP}\\perldoc1.b$$";
  396. push @pagers, qw( more< less notepad );
  397. unshift @pagers, $ENV{PAGER} if $ENV{PAGER};
  398. for (@found) { s,/,\\,g }
  399. }
  400. elsif ($Is_VMS) {
  401. $tmp = 'Sys$Scratch:perldoc.tmp1_'.$$;
  402. $buffer = 'Sys$Scratch:perldoc.tmp1_b'.$$;
  403. push @pagers, qw( most more less type/page );
  404. }
  405. elsif ($Is_Dos) {
  406. $tmp = "$ENV{TEMP}/perldoc1.$$";
  407. $buffer = "$ENV{TEMP}/perldoc1.b$$";
  408. $tmp =~ tr!\\/!//!s;
  409. $buffer =~ tr!\\/!//!s;
  410. push @pagers, qw( less.exe more.com< );
  411. unshift @pagers, $ENV{PAGER} if $ENV{PAGER};
  412. }
  413. else {
  414. if ($^O eq 'os2') {
  415. require POSIX;
  416. $tmp = POSIX::tmpnam();
  417. $buffer = POSIX::tmpnam();
  418. unshift @pagers, 'less', 'cmd /c more <';
  419. }
  420. else {
  421. $tmp = "/tmp/perldoc1.$$";
  422. $buffer = "/tmp/perldoc1.b$$";
  423. }
  424. push @pagers, qw( more less pg view cat );
  425. unshift @pagers, $ENV{PAGER} if $ENV{PAGER};
  426. }
  427. unshift @pagers, $ENV{PERLDOC_PAGER} if $ENV{PERLDOC_PAGER};
  428. # all exit calls from here on have to be safe_exit calls (see above)
  429. # and all die calls safe_die calls to guarantee removal of files and
  430. # dir as needed
  431. if ($opt_m) {
  432. foreach my $pager (@pagers) {
  433. system("$pager @found") or safe_exit(0, $tmp, $buffer);
  434. }
  435. if ($Is_VMS) { eval 'use vmsish qw(status exit); exit $?' }
  436. # I don't get the line above. Please patch yourself as needed.
  437. safe_exit(1, $tmp, $buffer);
  438. }
  439. my @pod;
  440. if ($opt_f) {
  441. my $perlfunc = shift @found;
  442. open(PFUNC, $perlfunc)
  443. or safe_die("Can't open $perlfunc: $!", $tmp, $buffer);
  444. # Functions like -r, -e, etc. are listed under `-X'.
  445. my $search_string = ($opt_f =~ /^-[rwxoRWXOeszfdlpSbctugkTBMAC]$/)
  446. ? 'I<-X' : $opt_f ;
  447. # Skip introduction
  448. while (<PFUNC>) {
  449. last if /^=head2 Alphabetical Listing of Perl Functions/;
  450. }
  451. # Look for our function
  452. my $found = 0;
  453. my $inlist = 0;
  454. while (<PFUNC>) {
  455. if (/^=item\s+\Q$search_string\E\b/o) {
  456. $found = 1;
  457. }
  458. elsif (/^=item/) {
  459. last if $found > 1 and not $inlist;
  460. }
  461. next unless $found;
  462. if (/^=over/) {
  463. ++$inlist;
  464. }
  465. elsif (/^=back/) {
  466. --$inlist;
  467. }
  468. push @pod, $_;
  469. ++$found if /^\w/; # found descriptive text
  470. }
  471. if (!@pod) {
  472. die "No documentation for perl function `$opt_f' found\n";
  473. }
  474. }
  475. if ($opt_q) {
  476. local @ARGV = @found; # I'm lazy, sue me.
  477. my $found = 0;
  478. my %found_in;
  479. while (<>) {
  480. if (/^=head2\s+.*(?:$opt_q)/oi) {
  481. $found = 1;
  482. push @pod, "=head1 Found in $ARGV\n\n" unless $found_in{$ARGV}++;
  483. }
  484. elsif (/^=head2/) {
  485. $found = 0;
  486. }
  487. next unless $found;
  488. push @pod, $_;
  489. }
  490. if (!@pod) {
  491. safe_die("No documentation for perl FAQ keyword `$opt_q' found\n",
  492. $tmp, $buffer);
  493. }
  494. }
  495. my $filter;
  496. if (@pod) {
  497. open(TMP,">$buffer") or safe_die("Can't open '$buffer': $!", $tmp, $buffer);
  498. print TMP "=over 8\n\n";
  499. print TMP @pod;
  500. print TMP "=back\n";
  501. close TMP;
  502. @found = $buffer;
  503. $filter = 1;
  504. }
  505. foreach (@found) {
  506. printout($_, $tmp, $filter);
  507. }
  508. page($tmp, $no_tty, @pagers);
  509. safe_exit(0, $tmp, $buffer);
  510. __END__
  511. =head1 NAME
  512. perldoc - Look up Perl documentation in pod format.
  513. =head1 SYNOPSIS
  514. B<perldoc> [B<-h>] [B<-v>] [B<-t>] [B<-u>] [B<-m>] [B<-l>] [B<-F>] [B<-X>] PageName|ModuleName|ProgramName
  515. B<perldoc> B<-f> BuiltinFunction
  516. B<perldoc> B<-q> FAQ Keyword
  517. =head1 DESCRIPTION
  518. I<perldoc> looks up a piece of documentation in .pod format that is embedded
  519. in the perl installation tree or in a perl script, and displays it via
  520. C<pod2man | nroff -man | $PAGER>. (In addition, if running under HP-UX,
  521. C<col -x> will be used.) This is primarily used for the documentation for
  522. the perl library modules.
  523. Your system may also have man pages installed for those modules, in
  524. which case you can probably just use the man(1) command.
  525. =head1 OPTIONS
  526. =over 5
  527. =item B<-h> help
  528. Prints out a brief help message.
  529. =item B<-v> verbose
  530. Describes search for the item in detail.
  531. =item B<-t> text output
  532. Display docs using plain text converter, instead of nroff. This may be faster,
  533. but it won't look as nice.
  534. =item B<-u> unformatted
  535. Find docs only; skip reformatting by pod2*
  536. =item B<-m> module
  537. Display the entire module: both code and unformatted pod documentation.
  538. This may be useful if the docs don't explain a function in the detail
  539. you need, and you'd like to inspect the code directly; perldoc will find
  540. the file for you and simply hand it off for display.
  541. =item B<-l> file name only
  542. Display the file name of the module found.
  543. =item B<-F> file names
  544. Consider arguments as file names, no search in directories will be performed.
  545. =item B<-f> perlfunc
  546. The B<-f> option followed by the name of a perl built in function will
  547. extract the documentation of this function from L<perlfunc>.
  548. =item B<-q> perlfaq
  549. The B<-q> option takes a regular expression as an argument. It will search
  550. the question headings in perlfaq[1-9] and print the entries matching
  551. the regular expression.
  552. =item B<-X> use an index if present
  553. The B<-X> option looks for a entry whose basename matches the name given on the
  554. command line in the file C<$Config{archlib}/pod.idx>. The pod.idx file should
  555. contain fully qualified filenames, one per line.
  556. =item B<PageName|ModuleName|ProgramName>
  557. The item you want to look up. Nested modules (such as C<File::Basename>)
  558. are specified either as C<File::Basename> or C<File/Basename>. You may also
  559. give a descriptive name of a page, such as C<perlfunc>. You may also give a
  560. partial or wrong-case name, such as "basename" for "File::Basename", but
  561. this will be slower, if there is more then one page with the same partial
  562. name, you will only get the first one.
  563. =back
  564. =head1 ENVIRONMENT
  565. Any switches in the C<PERLDOC> environment variable will be used before the
  566. command line arguments. C<perldoc> also searches directories
  567. specified by the C<PERL5LIB> (or C<PERLLIB> if C<PERL5LIB> is not
  568. defined) and C<PATH> environment variables.
  569. (The latter is so that embedded pods for executables, such as
  570. C<perldoc> itself, are available.) C<perldoc> will use, in order of
  571. preference, the pager defined in C<PERLDOC_PAGER>, C<MANPAGER>, or
  572. C<PAGER> before trying to find a pager on its own. (C<MANPAGER> is not
  573. used if C<perldoc> was told to display plain text or unformatted pod.)
  574. One useful value for C<PERLDOC_PAGER> is C<less -+C -E>.
  575. =head1 VERSION
  576. This is perldoc v2.0.
  577. =head1 AUTHOR
  578. Kenneth Albanowski <[email protected]>
  579. Minor updates by Andy Dougherty <[email protected]>,
  580. and others.
  581. =cut
  582. #
  583. # Version 1.14: Wed Jul 15 01:50:20 EST 1998
  584. # Robin Barker <[email protected]>
  585. # -strict, -w cleanups
  586. # Version 1.13: Fri Feb 27 16:20:50 EST 1997
  587. # Gurusamy Sarathy <[email protected]>
  588. # -doc tweaks for -F and -X options
  589. # Version 1.12: Sat Apr 12 22:41:09 EST 1997
  590. # Gurusamy Sarathy <[email protected]>
  591. # -various fixes for win32
  592. # Version 1.11: Tue Dec 26 09:54:33 EST 1995
  593. # Kenneth Albanowski <[email protected]>
  594. # -added Charles Bailey's further VMS patches, and -u switch
  595. # -added -t switch, with pod2text support
  596. #
  597. # Version 1.10: Thu Nov 9 07:23:47 EST 1995
  598. # Kenneth Albanowski <[email protected]>
  599. # -added VMS support
  600. # -added better error recognition (on no found pages, just exit. On
  601. # missing nroff/pod2man, just display raw pod.)
  602. # -added recursive/case-insensitive matching (thanks, Andreas). This
  603. # slows things down a bit, unfortunately. Give a precise name, and
  604. # it'll run faster.
  605. #
  606. # Version 1.01: Tue May 30 14:47:34 EDT 1995
  607. # Andy Dougherty <[email protected]>
  608. # -added pod documentation.
  609. # -added PATH searching.
  610. # -added searching pod/ subdirectory (mainly to pick up perlfunc.pod
  611. # and friends.
  612. #
  613. #
  614. # TODO:
  615. #
  616. # Cache directories read during sloppy match
  617. __END__
  618. :endofperl