⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htmlhelp.pm

📁 ARM上的如果你对底层感兴趣
💻 PM
📖 第 1 页 / 共 5 页
字号:

    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\">&nbsp;\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 "&nbsp;&nbsp;&nbsp;\n";
                print HTML "<img id=\"Pagegif_${counter}\" src=\"page.gif\">&nbsp;\n";
                print HTML "<a href=\"$dir_html_root\\$file\">\n";
                print HTML "$file_to_print\n";
                print HTML "</a><BR>\n";
            }
        } else {
            print HTML "&nbsp;&nbsp;&nbsp;\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">&nbsp;<a href="#ActivePerlDocs" target="TOC"><b>ActivePerl Docs</b></a><br>
      <img src="pinkbullet.gif" width="10" height="10">&nbsp;<a href="#GettingStarted" target="TOC"><b>Getting 
      Started</b></a><b><br>
      <img src="pinkbullet.gif" width="10" height="10">&nbsp;<a href="#ActivePerlComponents" target="TOC">ActivePerl 
      Components</a><br>
      <img src="pinkbullet.gif" width="10" height="10">&nbsp;<a href="#ActivePerlFAQ" target="TOC">ActivePerl 
      FAQ</a><br>
      <img src="pinkbullet.gif" width="10" height="10">&nbsp;<a href="#CorePerlFAQ" target="TOC">Core 
      Perl FAQ</a><br>
      <img src="pinkbullet.gif" width="10" height="10">&nbsp;<a href="#CorePerlDocs" target="TOC">Core 
      Perl Docs</a><br>
      <img src="pinkbullet.gif" width="10" height="10">&nbsp;<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">&nbsp; <a name="GettingStarted">Getting 
      Started</a></b><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_60" src="page.gif">&nbsp; <a href="perlmain.html"> 
      Welcome</a><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_60" src="page.gif">&nbsp; <a href="./perl-win32/Release.htm"> 
      Release Notes </a><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_60" src="page.gif">&nbsp; <a href="./perl-win32/Install.htm"> 
      Install Notes </a><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_60" src="page.gif">&nbsp; <a href="./perl-win32/Readme.htm"> 
      Readme<br>
      </a>&nbsp;&nbsp;&nbsp; <img id="Pagegif_60" src="page.gif">&nbsp; <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">&nbsp; 
      <a name="ActivePerlComponents">ActivePerl Components</a><BR>
      </b>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_61" src="page.gif">&nbsp; <a href="./perl-win32/description.html"> 
      Overview</a><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_61" src="page.gif">&nbsp; <a href="perlscript.html"> 
      Using PerlScript </a><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_61" src="page.gif">&nbsp; <a href="../eg/ie3examples/index.htm"> 
      PerlScript Examples </a><BR>
      <b> </b>&nbsp;&nbsp;&nbsp; <img id="Pagegif_68" src="page.gif">&nbsp; <a href="perlisapi.html"> 
      Using Perl for ISAPI </a><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_68" src="page.gif">&nbsp; <a href="./perl-win32/perlwin32faq2.html"> 
      Perl for ISAPI FAQ </a><BR>
      <b> </b>&nbsp;&nbsp;&nbsp; <img id="Pagegif_69" src="page.gif">&nbsp; <a href="ppm.html"> 
      Installing Modules</a><br>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_68" src="page.gif">&nbsp; <a href="./ppmproxy.htm">PPM 
      and Firewalls</a><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_68" src="page.gif">&nbsp; <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">&nbsp; 
      <a name="ActivePerlFAQ">ActivePerl FAQ</a><BR>
      </b> &nbsp;&nbsp;&nbsp; <img id="Pagegif_62" src="page.gif">&nbsp; <a href="./perl-win32/perlwin32faq.html"> 
      Introduction </a><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_62" src="page.gif">&nbsp; <a href="./perl-win32/perlwin32faq1.html"> 
      Availability & Install </a><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_62" src="page.gif">&nbsp; <a href="./perl-win32/perlwin32faq2.html"> 
      Perl for ISAPI</a><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_62" src="page.gif">&nbsp; <a href="./perl-win32/perlwin32faq3.html"> 
      Docs & Support </a><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_62" src="page.gif">&nbsp; <a href="./perl-win32/perlwin32faq4.html"> 
      Windows 95/NT </a><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_62" src="page.gif">&nbsp; <a href="./perl-win32/perlwin32faq5.html"> 
      Quirks </a><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_62" src="page.gif">&nbsp; <a href="./perl-win32/perlwin32faq6.html"> 
      Web Server Config</a><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_62" src="page.gif">&nbsp; <a href="./perl-win32/perlwin32faq7.html"> 
      Web programming </a><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_62" src="page.gif">&nbsp; <a href="./perl-win32/perlwin32faq8.html"> 
      Programming </a><BR>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_62" src="page.gif">&nbsp; <a href="./perl-win32/perlwin32faq9.html"> 
      Modules &amp; Samples</a><BR>
      <b> <img id="Foldergif_62" src="folder.gif" alt="FAQ for using Perl on Win95/NT">&nbsp; 
      <a name="CorePerlFAQ">Core Perl FAQ</a><br>
      </b> &nbsp;&nbsp;&nbsp; <img id="Pagegif_63" src="page.gif" alt="Perl frequently asked questions">&nbsp; 
      <a href="./lib/pod/perlfaq.html" alt="Perl documentation table of contents"> 
      perlfaq </a><br>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_63" src="page.gif" alt="Perl frequently asked questions">&nbsp; 
      <a href="./lib/pod/perlfaq1.html" alt="General Questions About Perl"> perlfaq1 
      </a><br>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_63" src="page.gif" alt="Perl frequently asked questions">&nbsp; 
      <a href="./lib/pod/perlfaq2.html" alt="Obtaining and Learning about Perl"> perlfaq2 
      </a><br>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_63" src="page.gif" alt="Perl frequently asked questions">&nbsp; 
      <a href="./lib/pod/perlfaq3.html" alt="Programming Tools"> perlfaq3 </a><br>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_63" src="page.gif" alt="Perl frequently asked questions">&nbsp; 
      <a href="./lib/pod/perlfaq4.html" alt="Data Manipulation"> perlfaq4 </a><br>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_63" src="page.gif" alt="Perl frequently asked questions">&nbsp; 
      <a href="./lib/pod/perlfaq5.html" alt="Files and Formats"> perlfaq5 </a><br>
      &nbsp;&nbsp;&nbsp; <img id="Pagegif_63" src="page.gif" alt="Perl frequently asked questions">&nbsp; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -