PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Formular auslesen mit PERL


aVenger
2007-04-22, 11:57:22
#!C:/Perl/bin/perl.exe -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

#der c-type gibt auskunft ob z.b. text oder html ausgegeben werden soll
print "Content-type: text/html\n\n";

#html ausgabe
print "<html>";
print "<head>";
print "<title>Primzahlenüberprüfung</title>";
print "</head>";
print "<body>";

print "<h1>Primzahlenüberprüfung</h1>";
print "<form method=post>";
print "<table width=100px>";
print "<tr>";
print "<td><input type=text size=40 name=wert></td>";
print "</tr>";
print "<tr>";
print "<td><input type=submit name=check value=&Uuml;berpr&uuml;fen></td>";
print "</tr>";
print "</table>";

print "</form>";

print "</body>";
print "</html>";

tjo das hier ist der code. nun möchte ich dass was im textfeld steht auslesen und mit funktionen weiter verarbeiten.
ich habe aber keine ahnung wie ich an den wert welcher im feld steht rankomme :/

aVenger
2007-04-22, 12:27:46
ich hab zwar keine ahnung wie aber ich habs hingekriegt

#!C:/Perl/bin/perl.exe -w

#use strict;
use CGI::Carp qw(fatalsToBrowser);

#der c-type gibt auskunft ob z.b. text oder html ausgegeben werden soll
print "Content-type: text/html\n\n";

#html ausgabe
print "<html>";
print "<head>";
print "<title>Primzahlenüberprüfung</title>";
print "</head>";
print "<body>";

print "<h1>Primzahlenüberprüfung</h1>";
print "<form name=myForm method=post>";
print "<table width=100px>";
print "<tr>";
print "<td><input type=text size=40 name=wert></td>";
print "</tr>";
print "<tr>";
print "<td><input type=submit name=check value=&Uuml;berpr&uuml;fen></td>";
print "</tr>";
print "</table>";

print "</form>";
print "</body>";
print "</html>";

# Lesen des standard inputs (gesendet vom formular):
read(STDIN, $FormData, $ENV{'CONTENT_LENGTH'});
# Auslesen von jeden namen/wert aus dem formular
@pairs = split(/&/, $FormData);
# für jedes name/wert Paar
foreach $pair (@pairs) {
# aufteilen des namen und des wertes
($name, $value) = split(/=/, $pair);
# konvertiert + zeichen zu leerzeichen
$value =~ tr/+/ /;
# konvertiert hex paare (%HH) zu ASCII characters:
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
# speichert werte im hash namens $form
$FORM{$name} = $value;
}

#der wert aus dem eingabefeld wird in eine variable gespeichert
$wert = $FORM{'wert'};

#überprufung ob es sich um eine primzahl handelt und ausgabe
if($wert != null) {
if ($wert < 2) {
print $wert. " ist keine Primzahl";
}
elsif ($wert == 2) {
print $wert. " ist eine Primzahl";
}
elsif ($wert%2 == 0) {
print $wert. " ist keine Primzahl";
}
else {
for ($i=3; $i*$i<=$wert; $i+=2) {
if ($wert%$i==0) {
print $wert. " ist keine Primzahl";
}
}
print $wert. " ist eine Primzahl";
}
}

aVenger
2007-05-21, 02:37:36
mal ne frage
kann mir einer den code trotzdem mal etwas genauer erklären?!

Gast
2007-05-21, 15:38:51
Ich könnte Dir erklären, dass es wohl kaum aufwändiger geht :D
Wie bist Du auf den Trichter gekommen?


#!C:/Perl/bin/perl.exe -w

#use strict;
use CGI::Carp qw(fatalsToBrowser); #brauchst Du nur für das Errorhandling
use CGI; #datt brauchst Du viel dringender, dann kannst Du Dir das gekröse zum Formularauslesen sparen

#der c-type gibt auskunft ob z.b. text oder html ausgegeben werden soll
print "Content-type: text/html\n\n";

#html ausgabe
print "<html>";
print "<head>";
print "<title>Primzahlenüberprüfung</title>";
print "</head>";
print "<body>";

print "<h1>Primzahlenüberprüfung</h1>";
print "<form name=myForm method=post>";
print "<table width=100px>";
print "<tr>";
print "<td><input type=text size=40 name=wert></td>";
print "</tr>";
print "<tr>";
print "<td><input type=submit name=check value=&Uuml;berpr&uuml;fen></td>";
print "</tr>";
print "</table>";

print "</form>";
print "</body>";
print "</html>";

my $query=CGI->new(); #neues CGI Objekt anlegen
my $wert=$query->param("wert"); #das value des HTML Paramaters "wert" aus dem CGI Objekt abholen

if($wert) #Wenn $ wert true ist
{
#do something
#hier kannste dann irgendwas mit $wert anstellen, zum Beispiel Dein sehr unschönes Primzahlgedösel
}