Thread Beginner hat beginnerproblem mit Prompten von Anweisungen
(4 answers)
Opened by Wild.Card at 2017-02-27 16:14
Hier wird niemand der Kopf abgerissen, höchstens mit neuem Wissen gefüllt und ein bisschen zum Lernen getriezt.
Du hast mit ($name = "Adam") der Variable $name den Wert Adam zu gewiesen! Und der Vergleich if ($name = "Adam") ist immer wahr, da eine Zeichenkette ungleich "" immer true ist. Vergleiche von Zeichenketten müssen mit eq erfolgen. http://perldoc.perl.org/perlop.html https://perlmaven.com/comparing-scalars-in-perl Gewöhne dir bitte an am Anfang des Programms zu schreiben: use strict; use warnings; Wenn dein Programm jetzt kompilierst: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 use strict; use warnings; print "Wie ist Dein Name? "; $name = <STDIN>; if ($name = "Adam") { print "Willkommen, Liebling!\n Was willst du? "; } else { print "Bitte geh."; } hätte Perl dir gesagt wo was haken könnte: Found = in conditional, should be == at a.pl line 12. Global symbol "$name" requires explicit package name at a.pl line 5. Global symbol "$name" requires explicit package name at a.pl line 7. Execution of a.pl aborted due to compilation errors. Also erst mal $name richtig definieren: my $name; $name = <STDIN>; ergibt dann: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 use strict; use warnings; print "Wie ist Dein Name? "; my $name; $name = <STDIN>; if ($name = "Adam") { print "Willkommen, Liebling!\n Was willst du? "; } else { print "Bitte geh."; } ergibt: Found = in conditional, should be == at a.pl line 14. a.pl syntax OK Da weist Perl mit einer Warnung darauf hin, dass der Vergleich nicht passen könnte. Wenn du das dann korrigierst: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 use strict; use warnings; print "Wie ist Dein Name? "; my $name; $name = <STDIN>; if ($name eq "Adam") { print "Willkommen, Liebling!\n Was willst du? "; } else { print "Bitte geh."; } funktioniert es immer noch nicht. Warum? Weil du mit <STDIN> auch das Zeilenendezeichen mit eingelesen hast. Das Zeilenende musst du vorher entfernen mit chomp; Also so komplett: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 use strict; use warnings; print "Wie ist Dein Name? "; my $name; $name = <STDIN>; chomp $name; if ($name eq "Adam") { print "Willkommen, Liebling!\n Was willst du? "; } else { print "Bitte geh."; } Du kannst auch auf https://de.perlmaven.com/perl-tutorial einiges lernen. Last edited: 2017-02-27 17:23:13 +0100 (CET) |