Avatar billede dank Nybegynder
29. august 2003 - 13:46 Der er 9 kommentarer og
2 løsninger

Ønskes der at forsætte dialog?

Jeg har noget i retning af

if ($var) {print "Error $error";}
else { ... }

Jeg ønsker scriptet bremset og en dialog der kommer op med noget i retning af

"Do you wish to continue? y/n";

Hvordan laver man det? Nogen der kan hjælpe med det?
Avatar billede dank Nybegynder
29. august 2003 - 14:02 #1
fandt denne stump kode:

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

while ($a ne "y" or "n")

??? Nogen der kan hjælpe?
Avatar billede dank Nybegynder
29. august 2003 - 14:23 #2
kan det evt være noget med

$a =~ mønster

?
Avatar billede mfalck Praktikant
29. august 2003 - 16:02 #3
du kan evt prøve med

while (/y|yes|n|no/i) {


}

det sidste "i" er for case-insensitive
Avatar billede mfalck Praktikant
29. august 2003 - 16:02 #4
det skal nok være en "if" istedet for "while".
Avatar billede mfalck Praktikant
29. august 2003 - 16:03 #5
eller

while ($a ne "y" || $a ne "n")
Avatar billede dank Nybegynder
29. august 2003 - 17:32 #6
mfalck> Har prøvet alt ovenstående uden held :o/ på forskellige måder.
Avatar billede mfalck Praktikant
29. august 2003 - 17:36 #7
jeg prøvede lige

while ($a ne "y" && $a ne "n")

og der går den videre hvis man svarer  y eller n
Avatar billede mfalck Praktikant
29. august 2003 - 17:38 #8
men det er vel kun hvis man svarer ja at den skal fortsætte - ellers skal scriptet blot gå ud ?
Avatar billede dank Nybegynder
29. august 2003 - 17:47 #9
ja.

ved Y så forsætter løkken blot og ved n laver jeg en exit();

Jeg afprøver det lige når jeg kommer tilbage om 2 timer. synes ellers jeg havde prøvet med && (det kender jeg jo pra php) men.. jeg prøver igen :)
Avatar billede breum Nybegynder
30. august 2003 - 22:46 #10
$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;
Avatar billede putteand Nybegynder
31. august 2003 - 00:53 #11
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester