print "Password? "; # Ask for input $a = <STDIN>; # Get input chop $a; # Remove the newline at end while ($a ne "fred") # While input is wrong... { print "sorry. Again? "; # Ask again $a = <STDIN>; # Get input again chop $a; # Chop off newline again }
Men linien:
while ($a ne "fred")
er jeg lidt i tvivl om.. jeg laver den om til
while ($a ne "y")
Fra de gamle assambler dage gætter jeg mig til at "ne" betyder not equal to, men hvordan laver jeg det om til
$a="y"; while ($a eq "y" || $a eq "Y") # While input is wrong... { print "OK here we go then\nWanna try again? (Y/N)"; # Ask again $a = <STDIN>; # Get input again chop $a; # Chop off newline again } print "\n\nNow you got tired? then we exit\n"; exit;
sub are_you_sure { print "Are you SURE you want to do this(y/n)? "; my $yesno = <STDIN>; chomp $yesno; if ($yesno =~ /^y$/i || $yesno =~ /^yes$/i) { return 1; } elsif ($yesno =~ /^n$/i || $yesno =~ /^no$/i) { return 0; } else { my $i = are_you_sure(); return $i; } } Så siger du bare inde i dit program if (are_you_sure()) { } else { exit; }
Så hvis personen svarer y/yes kører den videre, ved n/no slutter den og hvis den ikke kender svaret spørger den bare igen indtil den får noget passende.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.