Fehlermeldung in Perl
mabck
- perl
Hallo und guten Morgen,
habe da ein Felher im Skript aber ic hweiß nicht wo ich den beheben muss... kann mir denn da einer Helfen ? Habe die Antwort auch schon bekommen steht ganz unten nur ich weiß nicht wo ich das anwenden muss......
Gruß mabck
______________________________
Hier kommt das Skript:
_____________________________
#!/usr/bin/perl -w
$menue = <<HERE_MENUE;
Multiplizieren <1>
Addieren <2>
Subtrahieren <3>
Dividieren <4>
Beenden <5>
HERE_MENUE
$eingabe = 0;
$wert1 = 0;
$wert2 = 0;
$multi = 0;
$add = 0;
$subtra = 0;
$divid = 0;
do
{
print $menue;
chomp ($eingabe = <STDIN> );
WECHSEL:
{
$eingabe == 1 && do {print "Bitte geben Sie den 1ten Wert ein:\n";
chomp ($wert1 = <STDIN> );
$eingabe == {print "Bitte geben Sie den 2ten Wert ein:\n";
chomp ($wert2 = <STDIN> );
$multi = $wert1 * wert2;
print "\nErgebnis der Multiplikation: $multi\n";
last WECHSEL;};
$eingabe == 2 && do {print "Bitte geben Sie den 1ten Wert ein:\n";
chomp ($wert1 = <STDIN> );
$eingabe == {print "Bitte geben Sie den 2ten Wert ein:\n";
chomp ($wert2 = <STDIN> );
$add = $wert1 + wert2;
print "\nErgebnis der Addition: $add\n";
last WECHSEL;};
$eingabe == 3 && do {print "Bitte geben Sie den 1ten Wert ein:\n";
chomp ($wert1 = <STDIN> );
$eingabe == {print "Bitte geben Sie den 2ten Wert ein:\n";
chomp ($wert2 = <STDIN> );
$subtra = $wert1 - wert2;
print "\nErgebnis der Subtraktion: $subtra\n";
last WECHSEL;};
$eingabe == 4 && do {print "Bitte geben Sie den 1ten Wert ein:\n";
chomp ($wert1 = <STDIN> );
$eingabe == {print "Bitte geben Sie den 2ten Wert ein:\n";
chomp ($wert2 = <STDIN> );
$divid = $wert1 / wert2;
print "\nErgebnis der Division: $divid\n";
last WECHSEL;};
$eingabe == 5 && do {print "Skript beenden\n";
last WECHSEL;};
}
} while ($eingabe !=5);
______________________________
Ende das Skript:
_____________________________
Hier kommt mal was er dann an der Fehlermeldung bring :
Sybtax error C:\3.pl line 38, near " chomp "
Sybtax error C:\3.pl line 46, near " chomp "
Sybtax error C:\3.pl line 54, near " chomp "
Sybtax error C:\3.pl line 62, near " chomp "
Missing right curly or aquare bracket at c:\3.pl line 71, at end of line Execution of C:\3.pl aborted due to compilation erros
Das habe ich jetzt von einem bekommen :-(( Aber ich weiß nicht was ich da machen muss.....
guck Dir mal die Zeilen überm chomp an - da fehlt jeweils die }...
Hallo mabck,
#!/usr/bin/perl -w
use strict; fehlt hier
$menue = <<HERE_MENUE;
du meinst sicher my $menue
$eingabe = 0;
du meinst sicher my $eingabe
$wert1 = 0;
du meinst sicher my $wert1
$wert2 = 0;
du meinst sicher my $wert2
$multi = 0;
du meinst sicher my $multi0
$add = 0;
du meinst sicher my $add
$subtra = 0;
du meinst sicher my $subtra
$divid = 0;
du meinst sicher my $divid
WECHSEL:
Pfui.
$eingabe == 1 && do {print "Bitte geben Sie den 1ten Wert ein:\n";
Besser:
if($eingabe == 1) {
print "Bitte geben Sie den 1. Wert ein:\n";
chomp ($wert1 = <STDIN> );
$eingabe == {print "Bitte geben Sie den 2ten Wert ein:\n";
Hä? was soll das denn? Übrigens fehlt da eine abschliessende Klammer.
chomp ($wert2 = <STDIN> );
$multi = $wert1 * wert2;
print "\nErgebnis der Multiplikation: $multi\n";
last WECHSEL;};
Besser:
}
$eingabe == 2 && do {print "Bitte geben Sie den 1ten Wert ein:\n";
Besser:
elsif($eingabe == 2) {
print "Bitte geben Sie den 1. Wert ein:\n";
chomp ($wert1 = <STDIN> );
$eingabe == {print "Bitte geben Sie den 2ten Wert ein:\n";
Hä? was soll das denn? Übrigens fehlt da eine abschliessende Klammer.
chomp ($wert2 = <STDIN> );
$add = $wert1 + wert2;
print "\nErgebnis der Addition: $add\n";
last WECHSEL;};
Besser:
}
$eingabe == 3 && do {print "Bitte geben Sie den 1ten Wert ein:\n";
Besser:
elsif($eingabe == 3) {
print "Bitte geben Sie den 1. Wert ein:\n";
chomp ($wert1 = <STDIN> );
$eingabe == {print "Bitte geben Sie den 2ten Wert ein:\n";
Hä? was soll das denn? Übrigens fehlt da eine abschliessende Klammer.
chomp ($wert2 = <STDIN> );
$subtra = $wert1 - wert2;
print "\nErgebnis der Subtraktion: $subtra\n";
last WECHSEL;};
Besser:
}
$eingabe == 4 && do {print "Bitte geben Sie den 1ten Wert ein:\n";
Besser:
elsif($eingabe == 4) {
print "Bitte geben Sie den 1. Wert ein:\n";
chomp ($wert1 = <STDIN> );
$eingabe == {print "Bitte geben Sie den 2ten Wert ein:\n";
Hä? was soll das denn? Übrigens fehlt da eine abschliessende Klammer.
chomp ($wert2 = <STDIN> );
$divid = $wert1 / wert2;
print "\nErgebnis der Division: $divid\n";
last WECHSEL;};
Besser:
}
$eingabe == 5 && do {print "Skript beenden\n";
Besser:
elsif($eingabe == 5) {
print "Skript beenden\n";
last WECHSEL;};
Besser:
}
}
Das ist nicht länger nötig.
} while ($eingabe !=5);
Das wiederum ist gut so.
[...]
Missing right curly or aquare bracket at c:\3.pl line 71, at end of line Execution of
C:\3.pl aborted due to compilation erros
Da steht doch schon, was er von dir will.
Das habe ich jetzt von einem bekommen :-(( Aber ich weiß nicht was ich da machen muss.....
Du solltest Source, den du benutzt, auch verstehen. Was, wenn der Typ ein 'mkfs' oder ein
'format c:' drin versteckt hätte?
guck Dir mal die Zeilen überm chomp an - da fehlt jeweils die }...
Wenn du deinen Fehler weisst, warum postest du dann? Tse, tse, tse.
Grüße,
CK
Hallo,
sag mal ist es zu viel verlangt, wenn ich dich bitte, dass du mir nur bei den Fehlern hilfst. Ich bin erst gerade dabei Perl zu lerne. So wie du es da geschrieben hast, verstehe ich gar nichts mehr.....
Gruß mabck
dann,
würde ich vorschlagen, dass du dich ersteinmal mit den grundstrukturen von perl auseinander zusetzen.
Das was christian geschrieben hat ist Elementar.
______________________________
Hier kommt das Skript:
_____________________________
Das einige Macken hat, wie dir schon berichtet wurde.
Du solltest die Skripte (als Anfänger sowieso) immer mit eingeschalteten Warnungen und mit use strict schreiben.
#!/usr/bin/perl -w
use strict;
{
$eingabe == 1 && do {print "Bitte geben Sie den 1ten Wert ein:\n";
$eingabe == 2 && do {print "Bitte geben Sie den 1ten Wert ein:\n";
$eingabe == 3 && do {print "Bitte geben Sie den 1ten Wert ein:\n";
$eingabe == 4 && do {print "Bitte geben Sie den 1ten Wert ein:\n";
...
usw.
ob die Verwendung von do Blöcken hier sinnvoll ist weiß ich nicht. Sieht auf jeden Fall cool aus, ist aber in deinen Falle vermutlich ein Grund für den Fehler:
Hier kommt mal was er dann an der Fehlermeldung bring :
Sybtax error C:\3.pl line 38, near " chomp "
Sybtax error C:\3.pl line 46, near " chomp "
Sybtax error C:\3.pl line 54, near " chomp "
Sybtax error C:\3.pl line 62, near " chomp "
Missing right curly or aquare bracket at c:\3.pl line 71, at end of line Execution of C:\3.pl aborted due to compilation erros
Ich finde die Meldung eigentlich sehr aussagekräftig, leider läßt sich aber nicht immer sofort sehen, wo der Fehler ist.
In dem Skript fehlt mindestens eine schliessende Klammer
Das habe ich jetzt von einem bekommen :-(( Aber ich weiß nicht was ich da machen muss.....
guck Dir mal die Zeilen überm chomp an - da fehlt jeweils die }...
Genauer gesagt über dem jeweils 2. chomp
Aber so ist das Skript eher unübersichtlich, du solltest vielleicht doch lieber mit if ... elsif ... Strukturen arbeiten, dadurch sparst du dir ein paar Zeilen (jeweils die mit dem last WECHSEL) und hast die chance besser zu erkennen, was das Skript macht.
Struppi.