Markus Banach: Perl unendlich

Liebes Forumspublikum,

Meine Funktion filtering1 in Perl fuehrt zu einer Endlosschleife.
Waehrend Sie meine Frage lesen schreibt das Programm immer noch "Sorry I'm unable to do that" in den <STDOUT> .

Dabei wollte ich nur verhindern, das das Skript bei einer Falscheingabe einfach abbricht.

Kann mir jemand von Ihnen auf die Spruenge helfen.

Vielen Dank im vorraus !

Markus Banach

sub filtering1 {

print "Do you want to keep .gif, .jpg accesses\nin your log entries ? " ;
$answer1 = <STDIN> ;
my $myra = "false" ;

while ( $myra eq "false" ) {
       if ($answer1 =~ /[1]/) { print "I'll remove them for you";
                                  $myra = "true" ;}
       elsif ($answer1 =~ /[2]/) { print "I'll keep them for you";
                                     $myra = "true" ; }
       else { print "Sorry I'm unable to do that"; }
                                    } # end of while      
                                             } # end of sub


  1. nN ↩︎

  2. yY ↩︎

  1. Liebes Forumspublikum,

    Meine Funktion filtering1 in Perl fuehrt zu einer Endlosschleife.
    Waehrend Sie meine Frage lesen schreibt das Programm immer noch "Sorry I'm unable to do that" in den <STDOUT> .

    Dabei wollte ich nur verhindern, das das Skript bei einer Falscheingabe einfach abbricht.

    Kann mir jemand von Ihnen auf die Spruenge helfen.

    Vielen Dank im vorraus !

    Markus Banach

    sub filtering1 {

    print "Do you want to keep .gif, .jpg accesses\nin your log entries ? " ;
    $answer1 = <STDIN> ;
    my $myra = "false" ;

    while ( $myra eq "false" ) {
           if ($answer1 =~ /[1]/) { print "I'll remove them for you";
                                      $myra = "true" ;}
           elsif ($answer1 =~ /[2]/) { print "I'll keep them for you";
                                         $myra = "true" ; }
           else { print "Sorry I'm unable to do that"; }
                                        } # end of while      
                                                 } # end of sub

    ich weiss zwar nicht wieso du die while schleife brauchst ... eber im letzte else zweig solltest du $myra auf irgendetwas setzen was ungleich "false" ist !


    1. nN ↩︎

    2. yY ↩︎

  2. Liebes Forumspublikum,

    Meine Funktion filtering1 in Perl fuehrt zu einer Endlosschleife.
    Waehrend Sie meine Frage lesen schreibt das Programm immer noch "Sorry I'm unable to do that" in den <STDOUT> .

    Dabei wollte ich nur verhindern, das das Skript bei einer Falscheingabe einfach abbricht.

    Kann mir jemand von Ihnen auf die Spruenge helfen.

    Vielen Dank im vorraus !

    Markus Banach

    prbiers mit :

    sub filtering1 {

    my $myra = "false" ;

    while ( $myra eq "false" ) {

    print "Do you want to keep .gif, .jpg      accesses\nin your log entries ? " ;
    $answer1 = <STDIN> ;
            if ($answer1 =~ /[1]/) { print "I'll remove them for you";
                                      $myra = "true" ;}
            elsif ($answer1 =~ /[2]/) { print "I'll keep them for you";
                                          $myra = "true" ; }
            else { print "Sorry I'm unable to do that"; }
                                         } # end of while      
                                                  } # end of sub

    Ramarag ;-)


    1. nN ↩︎

    2. yY ↩︎

  3. Hi Markus,

    Meine Funktion filtering1 in Perl fuehrt zu einer Endlosschleife.
    Waehrend Sie meine Frage lesen schreibt das Programm immer noch "Sorry I'm unable to do that" in den <STDOUT> .

    sub filtering1 {

    print "Do you want to keep .gif, .jpg accesses\nin your log entries ? " ;
    $answer1 = <STDIN> ;
    my $myra = "false" ;

    while ( $myra eq "false" ) {
           if ($answer1 =~ /[1]/) { print "I'll remove them for you";
                                      $myra = "true" ;}
           elsif ($answer1 =~ /[2]/) { print "I'll keep them for you";
                                         $myra = "true" ; }
           else { print "Sorry I'm unable to do that"; }
                                        } # end of while      
                                                 } # end of sub

    Du solltest die Abfrage mit in die Schleife nehmen, sonst hat Dein Script niemals die  Chance $myra auf etwas anderes als "false" zu setzen.

    sub filtering1 {
        my $myra = "false" ;
        
        while ( $myra eq "false" ) {
            print "Do you want to keep .gif, .jpg accesses\nin your log entries ? " ;
            $answer1 = <STDIN> ;

    if ($answer1 =~ /[3]/) { print "I'll remove them for you";
                                      $myra = "true" ;}
            elsif ($answer1 =~ /[4]/) { print "I'll keep them for you";
                                         $myra = "true" ; }
            else { print "Sorry I'm unable to do that"; }
         } # end of while      
    } # end of sub

    Gruss,
    Angel


    1. nN ↩︎

    2. yY ↩︎

    3. nN ↩︎

    4. yY ↩︎