Struppi: Aufruf einer HTML Seite in gleicher Seite

Beitrag lesen

#!/usr/bin/perl

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ USE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Perl Funktionen

Perl Module.

use CGI;
use Switch;

du solltest auch use strict und use warnings verwenden, einerseits verhilft das zu einem besseren Stil anderseits kann dir das helfen Fehler zu vermeiden die nur schwer zu finden sind.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HTML ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Neues Objekt $query erzeugen

$query = new CGI;

print $query->header();      # HTML Header ausgeben
print"
<html>
   <!-- Kopfzeile -->
   <head>
     <title>Web-Interface für Servercheck</title>
     <link rel=shortcut icon href=favicon.ico />
    </head>
    <!-- Body -->
    <body>
       <!-- Überschrift -->
       <center><h2>Web-Interface für Servercheck</h2></center>

<!-- Formular -->
       <form method=post action=servercheck.cgi>
          <p>Bitte Wählen Sie eine Abfrage aus:</p>
          <p>
             <input type=radio name=abfrage value=dienste> Dienste<br>
             <input type=radio name=abfrage value=disk> Disk Usage<br>
             <input type=radio name=abfrage value=samba> Samba<br>
             <input type=radio name=abfrage value=all> ALLES TESTEN<br>
   </p>

<br>
   <br>
   <!-- Submit Button -->
   <input type=submit value=submit>
       </form>
    </body>
</html>";

Mal abgesehen, dass sowas schöner mit einem [link:http://perldoc.perl.org/perlop.html#Quote-and-Quote-like-Operators-operator%2c-quote-operator%2c-quote-like-q-qq-qx-qw-m--qr-s-tr-'-''-%22-%22%22-%2f%2f-%60-%60%60-%3c%3c-escape-sequence-escape@title=here-doc] hat dich Siechfred ja schon darauf hingewiesen, dass das CGI Modul auch dafür vielfältige Funktionen zu Verfügung stellt.

case "$value_samba"     { &checkSAMBA::checkSAMBA       };

Die Anführungszeichen sind hier überflüssig und sollten auch nicht benutzt werden, das &-Zeichen ist Uralt Perl und ebenfalls nicht mehr zeitgemäß, das sollte in etwa so aussehen:
[code lang=perl]case $value_samba     { checkSAMBA::checkSAMBA()       };

  
Wobei ich solche switch-case nicht besonders praktisch finde. in deinem Falle würde ich sowas machen:  
  
~~~perl
my $query = new CGI;  
my $dienste = {  
dienste => sub { print $query->location('http://de.selfhtml.org');},  
disk => sub  { checkDISK::checkDISK() },  
samba => sub { checkSAMBA::checkSAMBA() }  
};  
....  
my $value = $query->param('abfrage');  
if( $dienste->{$value} )  
{  
&{$dienste->{$value}}();  
}else  
{  
# entweder einen Fehler ausgeben oder eine Defaultfunktion aufrufen  
}  

so musst du an weniger Stellen Änderungen machen, falls du das Skript ergänzen willst

Struppi.

--
Javascript ist toll (Perl auch!)