LX-PERL-INFO-if-while
Updated aug/03/2010 19:54

if en while

  1. syntax

    if ( <voorwaarde> )
    {
         < perl statement >;
         < perl statement >;
    }
    while ( <voorwaarde> )
    {
         < perl statement >;
         < perl statement >;
    }
    unless ( <voorwaarde> )
    {
         < perl statement >;
         < perl statement >;
    }
    until ( <voorwaarde> )
    {
         < perl statement >;
         < perl statement >;
    }

    uitgebreide if syntax:

    if ( <voorwaarde> )
    {
         < perl statements >;
    }
    elsif (
    <voorwaarde> )
    {
         < perl statements >;
    }
    else

    {
         < perl statements >;
    }

  2. unless en until

    Een unless is het omgekeerde van een if, en kan ook als een if herschreven worden.

    Tenzij een getal groter is dan nul, doe dit: {}
    is hetzelde als
    Als een getal kleiner of gelijk aan nul is, doe dit: {}

    Een until is het omgekeerde van een while, en kan ook als while herschreven worden:

    totdat mijn teller nul wordt doe het volgende {}
    is hetzelfde als
    zolang mijn teller niet nul is doe het volgende {}

  3. voorwaarden

    nummerieke vergelijkingen

    $a > $b
    $a is groter dan $b
    $a >= $b
    $a is groter of gelijk aan $b
    $a < $b
    $a is kleiner dan $b
    $a <= $b
    $a is kleiner of gelijk aan $b
    $a == $b
    $a is gelijk aan $b
    $a != $b
    $a is niet gelijk aan $b

    string vergelijkingen

    $a gt $b
    $a komt alfabetisch achter $b
    $a ge $b
    $a alfabetisch achter of gelijk aan $b
    $a lt $b
    $a komt alfabetisch voor $b
    $a le $b
    $a alfabetisch voor of gelijk aan $b
    $a eq $b
    $a is hetzelfde als $b
    $a ne $b
    $a is niet gelijk aan $b

  4. voorbeeld

    #!/usr/bin/perl
    #
    # gemiddelde: berekent het gemiddelde van ingegeven parameters
    #
    $aantal = $#ARGV+1;
    print "\nAantal getallen =  $aantal\n\n";
    if ($aantal==0)
    {
            print "Er moet minstens 1 getal ingegeven worden\nals argument. Twee is nog beter!\n\n";
    }
    else
    {
            $teller = $aantal;
            while ($teller > 0)
            {
                    $som+=$ARGV[$teller-1];
                    $teller-=1;
            }
            $gemiddelde=$som/$aantal;
            print "Het gemiddelde = $gemiddelde\n\n";
    }

  5. lezen van input

    Je stelt gewoon een variabele gelijk aan <STDIN> ... om één regel te lezen.
    Met chomp verwijderen we de "\n" die meekomt met het einde van de regel.

    voorbeeld1
    :

    #!/usr/bin/perl
    #
    # input: eenvoudige input test
    #
    print "Tik wat in of druk enter ";
    $regel= <STDIN>;
    if ($regel eq "\n") { print "\nEen lege tekstregel\n" }
    else { print "\nJe hebt het volgende ingetikt:\n\n $regel" }

    voorbeeld2:

    #!/usr/bin/perl
    #
    # leesuid: lees een user id en zeg welk soort account het is
    #
    print "Geef uw UID in: ";
    $uid = <STDIN>;
    chomp($uid);

    unless ($uid<500) { print "Dit is een normaal user-account\n\n" }
    else { print "Dit is geen user-account\n\n" }

    Je kan ook een hele tekst inlezen regel per regel in een array, en daarna ook alle regels tegelijkertijd chompen:

    @tekstregels = <STDIN>;
    chomp(@tekstregels);

    of korter:

    chomp(@tekstregels = <STDIN>);

  6. do while

    Soms hebben we een lus nodig die minstens één keer draait vooraleer de while test wordt uitgevoerd. Dat kunnen we doen met een do while loop. Er bestaat eveneens een do until.

    syntax:

    do
    {

          <perl - code>
    } while $calc <100;

    voorbeeld:

    #!/usr/bin/perl
    #
    # kwadraat: berekent het kwadraat van de input
    #
    do
    {

         print "Geef een getal in, 0 om te stoppen ";
         $getal = <STDIN>;
         chomp($getal);
         $kwadraat=$getal*$getal;
         print "($getal)² = $kwadraat\n";
    } until ($getal==0)


  7. Meer over loops (last, next, redo, continue, goto, ..)

    -> http://www.tutorialspoint.com/perl/perl_loops.htm