Update 4
For usage see Re: perl docs -- I am so sick of...
cat /home/lanx/perl/bin/pd
>
#!/usr/bin/perl
use strict;
use Data::Dump;
my $pattern = $ARGV[0];
my $poddir = `perldoc -l perltoc`;
chomp $poddir;
$poddir =~ s/perltoc/*/;
#print `grep -l3 -F 'X<$pattern>' $poddir`; # find pods excep
+t perltoc
my @pods= grep {! /perltoc/}
`grep -l -F 'X<$pattern>' $poddir`; # find pods except perlto
+c
# rank pods with default=500
@pods = map { $_->[0] } sort { $a->[1] <=> $b->[1] }
map { /faq/ ? [$_=> 700] :
/delta/ ? [$_ => 900] :
/var/ ? [$_ => 100 ] :
/func/ ? [$_ => 200 ] :
[$_ => 500] }
@pods;
if (not @pods) {
print "No matches found\n";
} else {
print "Matches for $pattern found in :\n @pods";
}
chomp @pods;
#dd @pods;
for my $infile (@pods) {
open my $in, "<", $infile;
my $outfile = "/tmp/". (split "/",$infile)[-1];
open my $out,">", $outfile;
my $marker =
">>> X<$pattern> <<<"; #"MARK";
my ($podname) = ( $infile =~ /\/(\w*)\.pod$/);
local $/="\n\n"; # split paragraphs
while (my $para = <$in>){
print $out "\nC<<<< $marker >>>> in $podname\n\n" # prepend
+ marker
if $para =~ /X<\Q$pattern\E>/;
print $out $para;
}
close $out;
my $ret = `pod2man $outfile |nroff -man > /tmp/tmp.man`;
my $system = system( 'less -p \'' . shellescape($marker) . '\' /tmp/
+tmp.man');
print $system if $system ne 0;
}
sub shellescape {
my ($str) = @_;
$str =~ s/\$/\\\$/;
#print "$str\n";
return $str;
}
Cheers Rolf
( addicted to the Perl Programming Language)
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|