perlnewbie: Mini-Programm in Perl geschrieben, eine Frage

Beitrag lesen

Tach!

Was soll da denn stehen, was eine eingabe entgegen nimmt? Tut mir leid, bin aber wirklich völliger Anfänger, und versuche auch nicht allzu viele dumme Fragen zu stellen.

Auch als Programmieranfänger muss man ein kleines Bisschen Logik mitbringen. Wenn du vom Benutzer eine Eingabe entgegennehmen willst, muss du das in entsprechendem Code ausdrücken veranstalten. Von allein hopst die nicht in eine Variable. Und außerdem hast du das ja beim Namen schon gemacht. Du solltest das also bereits können.

Und dann hast du sowas:

if ($antwort1)

Du möchtest die Eingabe, die du noch nicht entgegengenommen hast, mit dem Wert in $antwort1 vergleichen. Stattdessen bewirkt das Konstrukt, dass der Inhalt von $antwort1 im booleschen Kontext ausgewertet wird. Das heißt, er wird nach Boolean konvertiert und ergibt immer true. it (true) hätte dieselbe Wirkung (wenn Perl true kennen würde). Du musst also, nachdem du die Eingabe in irgendeiner Variable stehen hast, sie mit $antwort1 und $antwort2 vergleichen, um zu einem sinnvollen Bedingungsausdruck zu kommen.

dedlfix.

So sieht mein Skript jetzt aus:

#!/usr/bin/perl
use 5.010;
use warnings FATAL => 'all';

say "Wie ist Dein Name? ";
my $name = <STDIN>;
say "Hallo $name, wie geht's Dir?";
$antwort1 = <STDIN>;
$antwort2 = <STDIN>;
$antwort1 = "gut";
$antwort2 = "schlecht";
if ($antwort1)  {
   # say "schön zu hören";
}
  if ($antwort2)  {
   # say "warum?"
}

Diesmal liegt das Problem darin, dass $antwort1 & $antwort2 jeweils zwei Zuweisungen bekommen haben, oder? Also z.B. kann $antwort1 ja nicht gleichzeitig <STDIN> & "gut" sein, oder?

Ist jetzt nicht ganz so wichtig, dass einer antwortet. Wer mag kann gerne helfen. Ich erwarte von euch gar nichts, erst recht nicht mehr heute, ist ja schon recht spät.

Also ich schaue es mir nochmal an, und vielleicht komme ich von selbst drauf. Oder es steht irgendwo mal sehen...

L.G. perlnewbie