| 77 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 78 | 
   | 
 # Print a file, whilst escaping HTML: - | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 79 | 
   | 
 sub print_file ($) { | 
 
 
 
 
 
 
 
 
 | 80 | 
 + | 
     my ($urls) = '(' . join ('|', qw{ | 
 
 
 
 
 
 
 
 
 | 81 | 
 + | 
                        http | 
 
 
 
 
 
 
 
 
 | 82 | 
 + | 
                        telnet | 
 
 
 
 
 
 
 
 
 | 83 | 
 + | 
                        gopher | 
 
 
 
 
 
 
 
 
 | 84 | 
 + | 
                        file | 
 
 
 
 
 
 
 
 
 | 85 | 
 + | 
                        wais | 
 
 
 
 
 
 
 
 
 | 86 | 
 + | 
                        ftp | 
 
 
 
 
 
 
 
 
 | 87 | 
 + | 
                        } ) | 
 
 
 
 
 
 
 
 
 | 88 | 
 + | 
                    . ')'; | 
 
 
 
 
 
 
 
 
 | 89 | 
 + | 
      | 
 
 
 
 
 
 
 
 
 | 90 | 
 + | 
     my ($ltrs) = '\w'; | 
 
 
 
 
 
 
 
 
 | 91 | 
 + | 
     my ($gunk) = '/#~:.?+=&%@!\-'; | 
 
 
 
 
 
 
 
 
 | 92 | 
 + | 
     my ($punc) = '.:?\-'; | 
 
 
 
 
 
 
 
 
 | 93 | 
 + | 
     my ($any) = "${ltrs}${gunk}${punc}"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 94 | 
   | 
     my ($filename) = @_; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 95 | 
   | 
     open(FILE, $filename) or die "Cannot open $filename: $!\n"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 96 | 
   | 
     print "<pre>\n"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 101 | 
   | 
         s/</</g; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 102 | 
   | 
         s/>/>/g; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 103 | 
   | 
         s/"/"/g; | 
 
 
 
 
 
 
 
 
 | 104 | 
 + | 
         s/\b($urls:[$any]+?)(?=[$punc]*[^$any]|$)/<a href="$1">$1<\/a>/igox; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 105 | 
   | 
         print; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 106 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 107 | 
   | 
     print "</pre>"; |