zoidby: template.pm fehler

halihalo,

habe gerade dieses script bekommen. aber auf meinem websrv (apache2.2.8/win32)
macht es mir probleme. ich denke es liegt wohl daran dass das modul template.pm
(perl/5.10.0) fehlt, denn in der error.conf steht:

  
[Fri Apr 18 11:56:21 2008] [error] [client 127.0.0.1] Premature end of script headers: enc.pl  
[Fri Apr 18 11:56:21 2008] [error] [client 127.0.0.1] Can't locate HTML/Template.pm in @INC (@INC contains: C:/Programme/perl/site/lib C:/Programme/perl/lib .) at E:\\fsr\\htdocs\\enc.pl line 5.  
[Fri Apr 18 11:56:21 2008] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at E:\\fsr\\htdocs\\enc.pl line 5.  

habe so denk ich schon eine lösung welche hier zu finden ist. allerdings
funktioniert das installieren bei mir nicht wie beschrieben (kann auch
daran liegen dass mein ansatz total falsch ist).

dann ist da noch der andere fehler (Premature end...), dass liegt wohl ehr
am script oder?

hier also der code (ich hoffe ich verstoße damit nicht gegen das copyright,
sollte jemand das script weiterverwenden wollen bitte autor fragen!):

  
#!C:/Programme/perl  
  
use strict;  
use CGI;  
use HTML::Template;  
use Crypt::CBC;  
  
my $supported = { des      => "DES",  
    blowfish => "Blowfish",  
                  twofish  => "Twofish",  
    rijndael => "Rijndael",  
    gost     => "GOST",  
    tea      => "TEA",  
    null     => "NULL",  
                  idea     => "IDEA",  
  };  
  
### cgi preps  
my $q = CGI->new();  
my $type = "encrypt" if $q->param("encrypt");  
$type = "decrypt" if $q->param("decrypt");  
  
### collect data and construct cipher  
my ($key, $text, $method, $cipher, $select);  
  
foreach (sort keys %$supported) {  
  $select .= "<option value=\"" . $_ . "\"";  
  $select .= " selected" if $_ eq $q->param("method");  
  $select .= ">" . $supported->{$_} . "\n";  
}  
  
if ($type) {  
  $key = $q->param("key");  
  $method = $supported->{$q->param("method")} || "";  
  $text = $q->param("text");  
  
  if ($method && $key) {  
    $cipher = new Crypt::CBC($key,$method);  
  }  
}  
  
### template preps  
my $tmpl = get_tmpl();  
my $template = HTML::Template->new(scalarref => \$tmpl);  
  
  
  
############################################################  
if ($type eq "encrypt" && $cipher && $text) {  
############################################################  
  
  $template->param(  
     cgi    => $ENV{SCRIPT_NAME},  
     key    => $key,  
     method => $select,  
     text   => $cipher->encrypt_hex($text),  
    );  
  
############################################################  
} elsif ($type eq "decrypt" && $cipher && $text) {  
############################################################  
  
  $template->param(  
     cgi    => $ENV{SCRIPT_NAME},  
     key    => $key,  
                   method => $select,  
                   text   => $cipher->decrypt_hex($text),  
    );  
  
############################################################  
} else {  
############################################################  
  
  $template->param(  
     cgi    => $ENV{SCRIPT_NAME},  
     method => $select,  
     message => "", #$key . " - " . $method,  
    );  
  
############################################################  
}  
############################################################  
  
print $q->header();  
print $template->output;  
  
# sub land  
  
############################################################  
sub get_tmpl {  
############################################################  
  
return <<'EOT';  
<html>  
<head>  
  <title>Verschl&uuml;sselungsdemo</title>  
  <style type="text/css">  
<!--  
  
      body {  
        background-color: #ffffff;  
      }  
      a:link, a:visited {  
        font-family: Verdana, Helvetica, Arial, sans-serif;  
        color: #333366;  
        font-weight: 100;  
        text-decoration: none;  
      }  
  
      a:active {  
        font-family: Verdana, Helvetica, Arial, sans-serif;  
        color: #333399;  
        font-weight: 700;  
        text-decoration: none;  
      }  
  
      a:hover {  
        font-family: Verdana, Helvetica, Arial, sans-serif;  
        color: #333366;  
        font-weight: 100;  
        text-decoration: underline;  
      }  
  
      h2 {  
        font-family: Verdana, Helvetica, Arial, sans-serif;  
        font-size: 14px;  
        line-height: 22px;  
        font-weight: 700;  
        text-decoration: none;  
      }  
      p,li {  
        font-family:  Verdana, Helvetica, Arial, sans-serif;  
        font-size: 12px;  
        text-decoration: none;  
      }  
      input {  
        overflow: hidden;  
        font-family:  Verdana, Helvetica, Arial, sans-serif;  
        font-size: 12px;  
        vertical-align: middle;  
      }  
  
      input.i300 {  
        width: 300px;  
        height: 21px;  
      }  
  
      textarea {  
        font-family:  Verdana, Helvetica, Arial, sans-serif;  
        font-size: 12px;  
        overflow: auto;  
        width: 300px;  
      }  
  
  
-->  
</style>  
  
  
</head>  
<body onLoad='window.resizeTo(450,600);'>  
  <h2>Verschl&uuml;sselungsdemo</h2>  
  <p><TMPL_VAR NAME=message></p>  
  <form action="<TMPL_VAR NAME=cgi>" method="post">  
    <table border="0" width="400">  
      <tr>  
        <td colspan="2">  
          <p>In dieser kleinen Demonstration k&ouml;nnen Sie einen symmetrischen Verschl&uuml;sselungsalgorithmus ausw&auml;hlen und dann durch Eingabe eines Schl&uuml;ssels einen beliebigen Text verschl&uuml;sseln. Der verschl&uuml;sselte Text ist hexadezimal kodiert.</p>  
          <p>&nbsp;</p>  
        </td>  
      </tr>  
      <tr>  
        <td><p>Cipher:</p></td>  
        <td><p>  
          <select rows="1" name="method">  
            <TMPL_VAR NAME=method>  
          </select></p>  
        </td>  
      </tr>  
      <tr>  
        <td><p>Schl&uuml;ssel:</p></td>  
        <td><p><input class="i300" type="text" size="60" maxlength="500" name="key" value="<TMPL_VAR NAME=key>"></p></td>  
      </tr>  
      <tr>  
        <td valign="top"><p>Text:</p></td>  
        <td><p>  
          <textarea cols="60" rows="10" name="text" wrap="soft"><TMPL_VAR ESCAPE=HTML NAME=text></textarea></p></td>  
      </tr>  
      <tr>  
        <td>&nbsp;</td>  
        <td><input type="submit" name="encrypt" value="verschl&uuml;sseln">&nbsp;<input type="submit" name="decrypt" value="entschl&uuml;sseln"></td>  
      </tr>  
      <tr>  
        <td colspan="2">  
          <p>&nbsp;</p>  
          <p>&copy; 2001 - <a target="_top" href="http://www.zeitform.de">zeitform Internet Dienste</a>. Quelltext auf <a href="mailto:zeitform@zeitform.de">Anfrage</a>.</p>  
        </td>  
      </tr>  
    </table>  
  </form>  
</body>  
</html>  
EOT  
}  

ich bin in sachen perl absoluter neuling wenn was ich schrieb schwachsinn
ist dann weist mich bitte darauf hin.

cucu
zoidby

  1. habe gerade dieses script bekommen. aber auf meinem websrv (apache2.2.8/win32)
    macht es mir probleme. ich denke es liegt wohl daran dass das modul template.pm
    (perl/5.10.0) fehlt, denn in der error.conf steht:

    Ja, d.h. du musst es installieren. Lokal kannst du dies mit cpan oder ppm (je nach Betriebsystem), bei einem Hoster entweder den Hoster fragen ob er es installiert oder in dem Falle kannst du auch einfach das Modul selber installieren, in dem du es in einem Unterverzeichniss mit dem Namen HTML schiebst.

    Struppi.

    1. halihalo,

      Ja, d.h. du musst es installieren. Lokal kannst du dies mit cpan oder ppm
      (je nach Betriebsystem), bei einem Hoster entweder den Hoster fragen ob er es
      installiert oder in dem Falle kannst du auch einfach das Modul selber
      installieren, in dem du es in einem Unterverzeichniss mit dem Namen HTML
      schiebst.

      das modul in den html ordner kopieren hat nichts gebracht (war doch
      "C:\Programme\perl\html" gemeint oder?)

      mit ppm hab ich es ebenfalls schon versucht da windows auf meinem privatem
      server leuft. habe mich da an http://alex.zeitform.de/cgi-bin/enc.pl orientiert
      (siehe "installation" auf der seite hinter dem link).

      hab also ppm gestartet aber das modul war nicht zu finden muss ich da etwa
      noch repositories hinzufügen?

      cucu
      zoidby

      1. Ja, d.h. du musst es installieren. Lokal kannst du dies mit cpan oder ppm
        (je nach Betriebsystem), bei einem Hoster entweder den Hoster fragen ob er es
        installiert oder in dem Falle kannst du auch einfach das Modul selber
        installieren, in dem du es in einem Unterverzeichniss mit dem Namen HTML
        schiebst.

        das modul in den html ordner kopieren hat nichts gebracht (war doch
        "C:\Programme\perl\html" gemeint oder?)

        Wenn das Skript im Verzeichniss C:\Programme\perl ist, ja. wenn es ein Linux Server ist, spielt ausserdem Groß- und Kleinschreibung bei Ordner- und Dateinamen eine Rolle.

        hab also ppm gestartet aber das modul war nicht zu finden muss ich da etwa
        noch repositories hinzufügen?

        Hast du dir Schreibweise beachtet?
        HTML-Template

        Struppi.

        1. halihalo,

          ja klar schreibweise hab ich beachtet, mann kann sich ja bei diesem ppm die
          "upgradable packages" anzeigen lassen da sind bei mir nur 2 zu finden

          und bei dem konsolenbefehl bekomm ich folgende prompt:

            
          C:\>PPM> install HTML-Template  
          Unrecognized ppm command 'HTML-Template'; try one of area, config,  
            describe, files, gui, help, install, list, log, query, remove, repo,  
            search, tree, uninstall, update, upgrade, verify, or version  
          Usage:  PPM <cmd> <arg>...  
                  Run 'PPM help' to learn more.  
          
          

          cucu
          zoidby

          1. und bei dem konsolenbefehl bekomm ich folgende prompt:
            [code lang=apache]
            C:>PPM> install HTML-Template

            Das ist absolut korrekt und funktioniert bei mir auch, nur das bei mir kein Laufwerksbuchstabe vorne steht:
            ppm> install HTML-Template
            Note: Package 'HTML-Template' is already installed.

            Hast du ppm überhaupt gestartet?

            Struppi.

            1. halihalo,

              also wenn ich nur ppm ausführe dann started das die gui und es lässt sich nix
              mehr in die konsole tippen, man muss also "PPM> install HTML-Template"
              ausführen.

              danke, für die instant hilfe!

              cucu
              zoidby

              1. also wenn ich nur ppm ausführe dann started das die gui und es lässt sich nix
                mehr in die konsole tippen, man muss also "PPM> install HTML-Template"
                ausführen.

                Naja, du kannst ja auch mit der gui installieren, dafür ist sie ja da.
                Aber der Befehl lautet natürlich "PPM install HTML-Template"

                Struppi.

                1. hey,

                  Aber der Befehl lautet natürlich "PPM install HTML-Template"

                  da hast du vollkommen recht so gings ;)

                  nur wars dass noch nicht, der error der nun ausgespuckt wird:

                    
                  [Fri Apr 18 15:54:50 2008] [error] [client 127.0.0.1] Premature end of script headers: enc.pl, referer: http://127.0.0.1/enc.pl  
                  [Fri Apr 18 15:54:50 2008] [error] [client 127.0.0.1] Couldn't load Crypt::Blowfish: Can't locate Crypt/Blowfish.pm in @INC (@INC contains: C:/Programme/perl/site/lib C:/Programme/perl/lib .) at (eval 7) line 1., referer: http://127.0.0.1/enc.pl  
                  [Fri Apr 18 15:54:50 2008] [error] [client 127.0.0.1]  at E:\\fsr\\htdocs\\enc.pl line 37, referer: http://127.0.0.1/enc.pl  
                  
                  

                  cucu
                  zoidby

                  1. Hallo zoidby!

                    [Fri Apr 18 15:54:50 2008] [error] [client 127.0.0.1] Couldn't load Crypt::Blowfish: Can't locate Crypt/Blowfish.pm in @INC (@INC contains: C:/Programme/perl/site/lib C:/Programme/perl/lib .) at (eval 7) line 1., referer: http://127.0.0.1/enc.pl

                    Hm, ich könnte mir vorstellen, ohne es zu kennen, dass Crypt/CBC.pm, das Du zu Beginn Deines enc.pl einbindest, auf Crypt/Blowfish.pm zurückgreift, und dieses wiederum ist bei Dir nicht installiert? »Can't locate ...« ist eigentlich genauso explizit wie »No such file or directory« ;)

                    Viele Grüße aus Frankfurt/Main,
                    Patrick

                    --

                    _ - jenseits vom delirium - _
                    [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
                    Nichts ist unmöglich? Doch!
                    Heute schon gegökt?
                    1. halihalo,

                      Hm, ich könnte mir vorstellen, ohne es zu kennen, dass Crypt/CBC.pm, das Du
                      zu Beginn Deines enc.pl einbindest, auf Crypt/Blowfish.pm zurückgreift, und
                      dieses wiederum ist bei Dir nicht installiert? »Can't locate ...« ist

                      ich denke Blowfish.pm müsste bei Crypt::CBC dabei sein oder?

                      cucu
                      zoidby

                      1. ich denke Blowfish.pm müsste bei Crypt::CBC dabei sein oder?

                        wenn du es mit ppm installiert.

                        Struppi.

      2. das modul in den html ordner kopieren hat nichts gebracht (war doch
        "C:\Programme\perl\html" gemeint oder?)

        Die Include-Pfade für Module wurden Dir schon mitgeteilt:

        (@INC contains: C:/Programme/perl/site/lib C:/Programme/perl/lib .)

        Ergo müsstest Du das Verzeichnis HTML als Unterverzeichnis dieser beiden Verzeichnisse anlegen und dort Template.pm speichern. Alternativ kannst Du den Ordner HTML nebst Template.pm auch in cgi-bin speichern.

        hab also ppm gestartet aber das modul war nicht zu finden muss ich da etwa noch repositories hinzufügen?

        Warst Du in der GUI oder auf der Shell? Eigentlich sind standardmäßig activestate.com und cpan.org als Repositories eingerichtet.

        Siechfred

        --
        Hinter den Kulissen passiert viel mehr, als man denkt, aber meistens nicht das, was man denkt.