#!/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!)