mabck: Fehlermeldung in 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 }...

  1. 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

    --
    Descartes sagte: 'Ich denke, also bin ich.' Ich hingegen sage: 'Ich denke nicht, also bin ich.'
    1. 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

      1. dann,

        würde ich vorschlagen, dass du dich ersteinmal mit den grundstrukturen von perl auseinander zusetzen.

        Das was christian geschrieben hat ist Elementar.

  2. ______________________________

    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.