FAQ2HTML
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:2k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. #!/usr/bin/perl -w
  2. $TOCHEADER=" TABLE OF CONTENTS";
  3. open(O, ">FAQ.html");
  4. print O '<p class="SectionTitle">
  5. FAQ
  6. </p>
  7. FAQ Maintainer: Dave Shield<br/>
  8. Email: <a href="mailto:net-snmp-coders@lists.sourceforge.net">net-snmp-coders@list.sourceforge.net</a><br/>
  9. <hr/>
  10. <h2>Table of Contents</h2>
  11. ';
  12. # Load FAQ into memory
  13. while(<>) {
  14.   push (@faqfile, $_);
  15. }
  16. my $current_line = 0;
  17. # Skip header up to table of contents
  18. while($current_line <= $#faqfile) {
  19.     $_ = $faqfile[$current_line];
  20.     $current_line++;
  21.     last if (/$TOCHEADER/);
  22. }
  23. # Create table of contents
  24. while($current_line <= $#faqfile) {
  25.     $_ = $faqfile[$current_line];
  26.     
  27.     #Skip blank lines
  28.     if (/^s*$/) {
  29.       $current_line++;
  30.       last;
  31.     }
  32.     chomp();
  33.     # Remove white space at start of line
  34.     $_ =~ s/^ *//;
  35.     
  36.     $x = $_;
  37.     # Remove white space at start of line
  38.     $x =~ s/^ *//g;
  39.     # Replace all non alpha characters with _
  40.     $x =~ s/[^a-zA-Z]/_/g;
  41.     # Save cleaned up line
  42.     $xlate{$_} = $x;
  43.     if ( /&/ ) { $_ =~ s/&/&amp;/g; }
  44.     if ( /</ ) { $_ =~ s/</&lt;/g; }
  45.     if ( />/ ) { $_ =~ s/>/&gt;/g; }
  46.     if (/^[ A-Z]+$/) {
  47.         # Section header (eg: GENERAL)
  48. print O "</ul><b>$_</b><ul>n";
  49.     } else {
  50.         # Question / answer - create link to it
  51.         if ($faqfile[$current_line+1] =~ /^     */) {
  52.           
  53.           # Continuation of the question.
  54.           $current_line++;
  55.           my $part2 = $faqfile[$current_line];
  56.           
  57.           # Remove white space at start of line
  58.           $part2 =~ s/^ *//;
  59.           print O "<li> <a href="#$x">$_ $part2</a></li>n";
  60.         }
  61.         else {
  62.           print O "<li> <a href="#$x">$_</a></li>n";
  63.         }
  64.     }
  65.     $current_line++;
  66. }
  67. print O "</ul><hr/><pre>n";
  68. # Print contents with targets defined
  69. while($current_line <= $#faqfile) {
  70.     $_ = $faqfile[$current_line];
  71.     $current_line++;
  72.     chomp();
  73.     $y = $_;
  74.     if (defined($xlate{$y})) {
  75. print O "<a name="$xlate{$y}"></a>n";
  76.     }
  77.     if ( /&/ ) { $_ =~ s/&/&amp;/g; }
  78.     if ( /</ ) { $_ =~ s/</&lt;/g; }
  79.     if ( />/ ) { $_ =~ s/>/&gt;/g; }
  80.     print O "$_n";
  81. }
  82. print O '
  83. </pre>
  84. ';