📄 htmlhelp.pm
字号:
if(opendir(DIR,$fromdir)) {
@podfiles = grep {/(\.pod)|(\.pm)/i} readdir(DIR);
if(@podfiles) {
foreach $podfile (@podfiles) {
$htmlfile = $podfile;
$htmlfile =~ s/(\.pm)|(\.pod)$/\.html/i;
$htmlfile = "$workdir/$htmlfile";
push(@htmlfiles, $htmlfile);
pod2html("--infile=$fromdir/$podfile", "--outfile=$htmlfile");
}
@htmlfiles = grep {-e $_} @htmlfiles;
MakeHelp($helpfile, $workdir, $outdir, @htmlfiles);
} else {
$! = "No files to be made from $fromdir";
return 0;
}
} else {
$! = "Could not open directory $fromdir";
return 0;
}
unlink @htmlfiles if $CLEANUP;
1;
}
#####################################################################
# FUNCTION MakeHelpFromDir
# RECEIVES Helpfile (no extension), Working directory, Output
# directory (for Helpfile), Dir of html files for input
# RETURNS 1|0
# SETS None
# EXPECTS None
# PURPOSE Takes a directory's worth of html files and binds
# them all into a chm file
sub MakeHelpFromDir {
my ($helpfile, $workdir, $outdir, $fromdir) = @_;
my @files;
if(opendir(DIR,$fromdir)) {
@files = map {"$fromdir/$_"} sort(grep {/\.html?/i} readdir(DIR));
closedir(DIR);
if(@files) {
MakeHelp($helpfile, $workdir, $outdir, @files);
} else {
$! = "No files to be made from $fromdir";
return 0;
}
} else {
$! = "Could not open directory $fromdir";
return 0;
}
1;
}
#####################################################################
# FUNCTION MakePerlHtml
# RECEIVES None
# RETURNS None
# SETS None
# EXPECTS $HTML, $LIB, $SITELIB
# PURPOSE Creates html files from pod for the entire perl
# system, and creates the main toc file.
sub MakePerlHtml {
MakeHtmlTree($LIB, "$HTML\\lib");
MakeHtmlTree($SITELIB, "$HTML\\lib\\site");
MakePerlHtmlIndex("$HTML\\lib", "$HTML\\perltoc.html");
}
#####################################################################
# FUNCTION MakePerlHtmlIndexCaller
# RECEIVES None
# RETURNS None
# SETS None
# EXPECTS $HTML
# PURPOSE Caller for MakePerlHtmlIndex. Using this function
# releases the caller from the responsibility of
# feeding params to MakePerlHtmlIndex, which this
# library gets automagically from Config.pm
sub MakePerlHtmlIndexCaller {
#
# Changed this to reflect the "single index file" idea
#
return MakePerlHtmlIndex("$HTML\\lib", "$HTML\\perltoc.html");
#return MakePerlHtmlIndex("$HTML\\lib", "$HTML\\maintoc.html");
}
#####################################################################
# FUNCTION MakePerlHtmlIndex
# RECEIVES Base directory to look in, $index file to create
# RETURNS 1 | 0
# SETS None
# EXPECTS None
# PURPOSE Creates the main html index for the perl system. This
# is called by ppm after installing a package.
sub MakePerlHtmlIndex {
my ($basedir, $indexfile) = @_;
my %files;
my $file;
my $file_cmp;
my $dir;
my $dir_cmp;
my $dir_to_print;
my $dir_html_root;
my $counter;
my $file_to_print;
my $sitedir;
my $libdir;
my $temp;
# Get a list of all the files in the tree, list refs keyed by dir.
# These files are under c:\perl\html\lib because they have
# already been generated.
unless(%files = GetHtmlFilesFromTree($basedir)) {
return 0;
}
# Start the html document
unless(open(HTML, ">$indexfile")) {
$! = "Couldn't write to $indexfile\n";
return 0;
}
print HTML "<HTML>\n";
print HTML "<HEAD>\n";
print HTML "<TITLE>Perl Help System Index</TITLE>\n";
print HTML "<BASE TARGET=\"PerlDoc\">\n";
print HTML "</HEAD>\n";
print HTML "<LINK REL=\"STYLESHEET\" HREF=\"win32prk.css\" TYPE=\"text/css\">";
print HTML "<STYLE>\n\tBODY {font-size : 8.5pt;}\n\tP {font-size : 8.5pt;}\n</STYLE>\n";
print HTML "<BODY>\n";
InsertMainToc_Temporary();
print HTML "<p>\n";
foreach $dir (keys %files) {
foreach $file (@{$files{$dir}}) {
$file_cmp = $file;
$file_cmp =~ s/\.html?$//i;
if(exists $files{"$dir\\$file_cmp"}) {
push(@{$files{"$dir\\$file_cmp"}}, "$file_cmp/$file");
@{$files{$dir}} = grep {$_ ne $file} @{$files{$dir}};
}
}
}
# Merge the different directories if duplicate directories
# exist for lib and site. Effectively this removes lib\site
# from existence, and prepends "site" onto the file name for
# future reference. This way there is only one folder per
# heading, but I can still tell when to use "site" in
# making a html link.
$libdir = "$HTML\\lib";
$sitedir = "$HTML\\lib\\site";
push(@{$files{$libdir}}, map {"site/$_"} @{$files{$sitedir}});
delete $files{$sitedir};
foreach $dir (keys %files) {
if($dir =~ /(\\|\/)site(\\|\/)/i) {
$dir_cmp = $dir;
$dir_cmp =~ s,((\\|\/)lib(\\|\/))site(\\|\/),$1,i;
push(@{$files{$dir_cmp}}, map {"site/$_"} @{$files{$dir}});
delete $files{$dir};
}
}
foreach $dir (sort { uc($a) cmp uc($b) } keys(%files)) {
$counter++;
$dir_to_print = $dir;
# get just the directory starting with lib\
$dir_to_print =~ s/.*(\\|\/)(lib(\\|\/)?.*)/$2/i;
# change slashes to double colons
$dir_to_print =~ s/\\|\//::/g;
# kill extra stuff lib and site
$dir_to_print =~ s/lib:://i;
# Don't want to see lib:: and lib::site::
$dir_to_print =~ s/(.*)(\\|\/|::)$/$1/;
if($dir_to_print =~ /^lib((\\|\/)site)?$/i) {
$dir_to_print = 'Root Libraries';
}
print HTML "\n<!-- -------------------------------------------- $dir -->\n";
print HTML "<SPAN \n";
print HTML " id=\"Dir_${counter}\"\n";
print HTML ">\n";
print HTML "<b>\n";
print HTML "<img id=\"Foldergif_${counter}\" src=\"folder.gif\"> \n";
print HTML "$dir_to_print<BR>\n";
print HTML "</b></SPAN>\n";
print HTML "<SPAN \n";
print HTML " id=\"Files_${counter}\"\n";
print HTML ">\n";
if(@{$files{$dir}}) {
foreach $file (sort { $c = $a;
$d = $b;
$c =~ s/^site(\\|\/)//i;
$d =~ s/^site(\\|\/)//i;
uc($c) cmp uc($d) } (@{$files{$dir}})) {
$file_to_print = $file;
$file_to_print =~ s/\.html?//i;
$dir_html_root = $dir;
if($file_to_print =~ /^site(\\|\/)[^\/]*$/i) {
$dir_html_root =~ s/(lib(\\|\/))/$1site\//i;
$dir_html_root =~ s,(\\|\/)lib$,\/lib\/site,i;
$file_to_print =~ s/^site(\\|\/)//i;
$file =~ s/^site(\\|\/)//i;
} elsif($file_to_print =~ /^site(\\|\/)(.*)(\\|\/)/i) {
$temp = $2;
# Get rid of the site
$dir_html_root =~ s/(lib(\\|\/))/$1site\//i;
$dir_html_root =~ s,(\\|\/)lib$,\/lib\/site,i;
$file_to_print =~ s/^site(\\|\/)//i;
$file =~ s/^site(\\|\/)//i;
# Get rid of the additional directory
$file_to_print =~ s/^[^\\\/]*(\\|\/)//i;
$file =~ s/^[^\\\/]*(\\|\/)//i;
$dir_html_root =~ s/(\\|\/)$temp(\\|\/)?//i;
} elsif($file_to_print =~ /^(.*)\//) {
$temp = $1;
# $file_to_print =~ s/^[^\\\/](\\|\/)?//i;
# $file =~ s/^[^\\\/](\\|\/)?//i;
$file_to_print =~ s/^.*?[\\\/]//i;
$file =~ s/^.*?[\\\/]//i;
$dir_html_root =~ s/(\\|\/)$temp(\\|\/)?//i;
}
$dir_html_root =~ s/.*(\\|\/)lib$/lib/i;
$dir_html_root =~ s/.*(\\|\/)(lib(\\|\/).*)/$2/i;
$dir_html_root =~ s/lib(\\|\/)\.\.(\\|\/)html(\\|\/)//i;
print HTML " \n";
print HTML "<img id=\"Pagegif_${counter}\" src=\"page.gif\"> \n";
print HTML "<a href=\"$dir_html_root\\$file\">\n";
print HTML "$file_to_print\n";
print HTML "</a><BR>\n";
}
} else {
print HTML " \n";
print HTML "No pod / html<BR>\n";
}
print HTML "</SPAN>\n";
}
print HTML "</p>\n";
# Close the file
print HTML "</BODY>\n";
print HTML "</HTML>\n";
close(HTML);
return 1;
}
#####################################################################
# FUNCTION InsertMainToc_Temporary
# RECEIVES None
# RETURNS None
# SETS None
# EXPECTS HTML must be an open file handls
# PURPOSE Temporary (interim) function to hard code the content
# of the main toc into a single, merged toc
sub InsertMainToc_Temporary {
print HTML <<'END_OF_MAIN_TOC';
<p><a href="http://www.ActiveState.com"><img src="aslogo.gif" border="0"></a></p>
<p><img src="pinkbullet.gif" width="10" height="10"> <a href="#ActivePerlDocs" target="TOC"><b>ActivePerl Docs</b></a><br>
<img src="pinkbullet.gif" width="10" height="10"> <a href="#GettingStarted" target="TOC"><b>Getting
Started</b></a><b><br>
<img src="pinkbullet.gif" width="10" height="10"> <a href="#ActivePerlComponents" target="TOC">ActivePerl
Components</a><br>
<img src="pinkbullet.gif" width="10" height="10"> <a href="#ActivePerlFAQ" target="TOC">ActivePerl
FAQ</a><br>
<img src="pinkbullet.gif" width="10" height="10"> <a href="#CorePerlFAQ" target="TOC">Core
Perl FAQ</a><br>
<img src="pinkbullet.gif" width="10" height="10"> <a href="#CorePerlDocs" target="TOC">Core
Perl Docs</a><br>
<img src="pinkbullet.gif" width="10" height="10"> <a href="#ModuleDocs" target="TOC">Module
Docs</a></b></p>
<hr>
<h4><a name="ActivePerlDocs">ActivePerl Docs</a></h4>
<p><b><img id="Foldergif_60" src="folder.gif"> <a name="GettingStarted">Getting
Started</a></b><BR>
<img id="Pagegif_60" src="page.gif"> <a href="perlmain.html">
Welcome</a><BR>
<img id="Pagegif_60" src="page.gif"> <a href="./perl-win32/Release.htm">
Release Notes </a><BR>
<img id="Pagegif_60" src="page.gif"> <a href="./perl-win32/Install.htm">
Install Notes </a><BR>
<img id="Pagegif_60" src="page.gif"> <a href="./perl-win32/Readme.htm">
Readme<br>
</a> <img id="Pagegif_60" src="page.gif"> <a href="./perl-win32/dirstructure.html">
Dir Structure</a><br>
<b> <img id="Foldergif_61" src="folder.gif" alt="Instructions and sample scripts for using PerlScript">
<a name="ActivePerlComponents">ActivePerl Components</a><BR>
</b>
<img id="Pagegif_61" src="page.gif"> <a href="./perl-win32/description.html">
Overview</a><BR>
<img id="Pagegif_61" src="page.gif"> <a href="perlscript.html">
Using PerlScript </a><BR>
<img id="Pagegif_61" src="page.gif"> <a href="../eg/ie3examples/index.htm">
PerlScript Examples </a><BR>
<b> </b> <img id="Pagegif_68" src="page.gif"> <a href="perlisapi.html">
Using Perl for ISAPI </a><BR>
<img id="Pagegif_68" src="page.gif"> <a href="./perl-win32/perlwin32faq2.html">
Perl for ISAPI FAQ </a><BR>
<b> </b> <img id="Pagegif_69" src="page.gif"> <a href="ppm.html">
Installing Modules</a><br>
<img id="Pagegif_68" src="page.gif"> <a href="./ppmproxy.htm">PPM
and Firewalls</a><BR>
<img id="Pagegif_68" src="page.gif"> <a href="./lib/site/pod/perlez.html">
PerlEZ</a><BR>
<b><img id="Foldergif_62" src="folder.gif" alt="FAQ for using Perl on Win95/NT">
<a name="ActivePerlFAQ">ActivePerl FAQ</a><BR>
</b> <img id="Pagegif_62" src="page.gif"> <a href="./perl-win32/perlwin32faq.html">
Introduction </a><BR>
<img id="Pagegif_62" src="page.gif"> <a href="./perl-win32/perlwin32faq1.html">
Availability & Install </a><BR>
<img id="Pagegif_62" src="page.gif"> <a href="./perl-win32/perlwin32faq2.html">
Perl for ISAPI</a><BR>
<img id="Pagegif_62" src="page.gif"> <a href="./perl-win32/perlwin32faq3.html">
Docs & Support </a><BR>
<img id="Pagegif_62" src="page.gif"> <a href="./perl-win32/perlwin32faq4.html">
Windows 95/NT </a><BR>
<img id="Pagegif_62" src="page.gif"> <a href="./perl-win32/perlwin32faq5.html">
Quirks </a><BR>
<img id="Pagegif_62" src="page.gif"> <a href="./perl-win32/perlwin32faq6.html">
Web Server Config</a><BR>
<img id="Pagegif_62" src="page.gif"> <a href="./perl-win32/perlwin32faq7.html">
Web programming </a><BR>
<img id="Pagegif_62" src="page.gif"> <a href="./perl-win32/perlwin32faq8.html">
Programming </a><BR>
<img id="Pagegif_62" src="page.gif"> <a href="./perl-win32/perlwin32faq9.html">
Modules & Samples</a><BR>
<b> <img id="Foldergif_62" src="folder.gif" alt="FAQ for using Perl on Win95/NT">
<a name="CorePerlFAQ">Core Perl FAQ</a><br>
</b> <img id="Pagegif_63" src="page.gif" alt="Perl frequently asked questions">
<a href="./lib/pod/perlfaq.html" alt="Perl documentation table of contents">
perlfaq </a><br>
<img id="Pagegif_63" src="page.gif" alt="Perl frequently asked questions">
<a href="./lib/pod/perlfaq1.html" alt="General Questions About Perl"> perlfaq1
</a><br>
<img id="Pagegif_63" src="page.gif" alt="Perl frequently asked questions">
<a href="./lib/pod/perlfaq2.html" alt="Obtaining and Learning about Perl"> perlfaq2
</a><br>
<img id="Pagegif_63" src="page.gif" alt="Perl frequently asked questions">
<a href="./lib/pod/perlfaq3.html" alt="Programming Tools"> perlfaq3 </a><br>
<img id="Pagegif_63" src="page.gif" alt="Perl frequently asked questions">
<a href="./lib/pod/perlfaq4.html" alt="Data Manipulation"> perlfaq4 </a><br>
<img id="Pagegif_63" src="page.gif" alt="Perl frequently asked questions">
<a href="./lib/pod/perlfaq5.html" alt="Files and Formats"> perlfaq5 </a><br>
<img id="Pagegif_63" src="page.gif" alt="Perl frequently asked questions">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -