1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
<head>
<title>Taschenrechner</title>
</head>
<body>
<h1>Taschenrechner</h1>
<form action="/cgi-bin/Taschenrechner.pl" method=post>
<p>Zahl 1: <input size="4" maxlength="3" name="Zahl1">
<br>
Zahl 2: <input size="4" maxlength="3" name="Zahl2">
<br>
Rechenart: <input size="2" maxlength="3" name="Rechenart">
<br>
<input type="SUBMIT" value="Berechnen">
<input type="reset" value="Reset">
</p>
</form>
</body>
</html>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
#!/Perl/bin/perl.exe -w # einfaches Taschenrechnerprogramm use strict; use warnings; print "Bitte die erste Zahle eingeben: "; # Zahl 1 $z1 = <STDIN>; chomp $z1; print "\nBitte die zweite Zahl eingeben: "; # Zahl2 $z2 = <STDIN>; chomp $z2; print "\nBitte die Rechenart eingeben (+, -, * oder/:"; #Rechenart $ra = <STDIN>; chomp $ra; if ( $ra eq '+' ) { $erg = $z1 + $z2; } elsif ( $ra eq '-' ) { $erg = $z1 - $z2; } elsif ( $ra eq '*' ) { $erg = $z1 * $z2; } elsif ( $ra eq '/' ) { $erg eq $z1 / $z2; } else { print "Diese Rechenart ist mir nicht bekannt!"; die; #stirb - Programmabruch } print "\nDie Rechnung: $z1 $ra $z2 = $erg\n";
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#!/Perl/bin/perl -w # einfaches Taschenrechnerprogramm use strict; use warnings; read(STDIN, $input, $ENV{ 'CONTENT_LENGTH'}); #Anfang der HTML-Seite und Ausgabe von $input print "Content-type: text/html\n\n"; print "<html>"; print "<head>"; print "<title>Antwortseite des CGI-Programms</title>"; print "</head>n\"; print "<body>"; print "<p>"; print "<br>$input</b>\n";
1
2
3
4
5
6
7
Wenn CGI-Daten gesendet wurden
CGI-Daten einlesen
Berechnung machen
HTML-Seite mit Ergebnis ausgeben
Sonst
HTML-Seite mit Eingabe-Formular ausgeben
EndeWenn
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
#!/usr/bin/perl use 5.008; use strict; use warnings; # Grobkonzept use CGI; my $cgi = CGI->new(); my $zahl_1 = $cgi->param('Zahl1'); my $zahl_2 = $cgi->param('Zahl2'); my $rechenart = $cgi->param('Rechenart'); my $ergebnis = 0; sub Berechne { my $z1 = shift; my $z2 = shift; my $ra = shift; chomp($z1); chomp($z2); chomp($ra); my $erg; if ( $ra eq '+' ) { $erg = $z1 + $z1; } elsif ( $ra eq '-' ) { $erg = $z1 - $z2; } elsif ( $ra eq '*' ) { $erg = $z1 * $z2; } elsif ( $ra eq '/' ) { if ($z2 != 0) { $erg = $z1 / $z2; } else { $erg = "Zweite Zahl darf nicht 0 sein!"; } } else { $erg = "Rechenart '$ra' unbekannt!"; } return $erg; } print $cgi->header; if ( length($zahl_1) and length($zahl_2) and length($rechenart) ) { $ergebnis = Berechne($zahl_1, $zahl_2, $rechenart); print <<"HTML"; <html> <head> <title>Antwortseite des CGI-Programms</title> </head> <body> <p> <br>$ergebnis</b> </p> </body> </html> HTML } else { print <<"HTML"; <html> <head> <title>Taschenrechner</title> </head> <body> <h1>Taschenrechner</h1> <form action="/cgi-bin/Taschenrechner.pl" method=post> <p>Zahl 1: <input size="4" maxlength="3" name="Zahl1"> <br> Zahl 2: <input size="4" maxlength="3" name="Zahl2"> <br> Rechenart: <input size="2" maxlength="3" name="Rechenart"> <br> <input type="SUBMIT" value="Berechnen"> <input type="reset" value="Reset"> </p> </form> </body> </html> HTML }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#!/Perl/bin/perl -w use strict; use warnings; # einfaches Taschenrechnerprogramm my $zahl1 my $zahl2 my $rechenart my $ergebnis read(STDIN, $input, $ENV{ 'CONTENT_LENGTH'}); print "Content-type: text/html\n\n"; print "<html>"; print "<head>"; print "<title>Antwortseite des CGI-Programms</title>"; print "</head>n\"; print "<body>"; print "<p>"; print "<br>$ergebnis</b>\n";
1 2 3 4 5 6 7 8 9 10 11 12
read(STDIN, $input, $ENV{ 'CONTENT_LENGTH'}); my %Form; # Hash für Variablen my @pairs = split( /&/, $input ); foreach my $pair ( @pairs ) { my ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $Form{ $name } = $value; } # ab jetzt sind die eingelesenen CGI-Variablen in %Form drin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/Perl/bin/perl -w
use strict;
use warnings;
# einfaches Taschenrechnerprogramm
my $Zahl1
my $Zahl2
my $Rechenart
my $Ergebnis
read(STDIN, $input, $ENV{ 'CONTENT_LENGTH'});
my %Form; # Hash für Variablen
my @pairs = split( /&/, $input );
foreach my $pair ( @pairs ) {
my ($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$Form{ $name } = $value;
}
# ab jetzt sind die eingelesenen CGI-Variablen in %Form drin
print "Content-type: text/html\n\n";
print "<html>";
print "<head>";
print "<title>Antwortseite des CGI-Programms</title>";
print "</head>";
print "<body>";
print "<p>";
print "<br>$Ergebnis</b>\n";
# Zahl 1
$Zahl1 = $Form{Zahl1};
# Zahl 2
$Zahl2 = $Form{Zahl2};
#Rechenart
$Rechenart = $Form{Rechenart};
if ( $Rechenart eq '+' )
{
$Ergebnis = $Zahl1 + $Zahl2;
}
elsif ( $Rechenart eq '-' )
{
$Ergebnis = $Zahl1 - $Zahl2;
}
elsif ( $Rechenart eq '*' )
{
$Ergebnis = $Zahl1 * $Zahl2;
}
elsif ( $Rechenart eq '/' )
{
$Ergebnis eq $Zahl1 / $Zahl2;
}
else
{
print "Diese Rechenart ist mir nicht bekannt!";
die;
#stirb - Programmabruch
}
print "Die Rechnung: $Zahl1 $Rechenart $Zahl2 = $Ergebnis";
print "</body>";
print "</html>";
1
2
3
4
5
6
7
8
9
10
11
[Tue Apr 17 21:49:18 2012] [error] [client 127.0.0.1] Premature end of script headers: Hausaufgabe2.pl
[Tue Apr 17 21:49:18 2012] [error] [client 127.0.0.1] syntax error at C:\\Apache Software Foundation\\Apache2.2\\cgi-bin\\Hausaufgabe2.pl line 8, near "$Zahl1\r
[Tue Apr 17 21:49:18 2012] [error] [client 127.0.0.1] my "\r
[Tue Apr 17 21:49:18 2012] [error] [client 127.0.0.1] Global symbol "$Zahl2" requires explicit package name at C:\\Apache Software Foundation\\Apache2.2\\cgi-bin\\Hausaufgabe2.pl line 9.\r
[Tue Apr 17 21:49:18 2012] [error] [client 127.0.0.1] Global symbol "$Zahl2" requires explicit package name at C:\\Apache Software Foundation\\Apache2.2\\cgi-bin\\Hausaufgabe2.pl line 36.\r
[Tue Apr 17 21:49:18 2012] [error] [client 127.0.0.1] Global symbol "$Zahl2" requires explicit package name at C:\\Apache Software Foundation\\Apache2.2\\cgi-bin\\Hausaufgabe2.pl line 43.\r
[Tue Apr 17 21:49:18 2012] [error] [client 127.0.0.1] Global symbol "$Zahl2" requires explicit package name at C:\\Apache Software Foundation\\Apache2.2\\cgi-bin\\Hausaufgabe2.pl line 47.\r
[Tue Apr 17 21:49:18 2012] [error] [client 127.0.0.1] Global symbol "$Zahl2" requires explicit package name at C:\\Apache Software Foundation\\Apache2.2\\cgi-bin\\Hausaufgabe2.pl line 51.\r
[Tue Apr 17 21:49:18 2012] [error] [client 127.0.0.1] Global symbol "$Zahl2" requires explicit package name at C:\\Apache Software Foundation\\Apache2.2\\cgi-bin\\Hausaufgabe2.pl line 55.\r
[Tue Apr 17 21:49:18 2012] [error] [client 127.0.0.1] Global symbol "$Zahl2" requires explicit package name at C:\\Apache Software Foundation\\Apache2.2\\cgi-bin\\Hausaufgabe2.pl line 63.\r
[Tue Apr 17 21:49:18 2012] [error] [client 127.0.0.1] Execution of C:\\Apache Software Foundation\\Apache2.2\\cgi-bin\\Hausaufgabe2.pl aborted due to compilation errors.\r