LX-PERL-INFO-for-foreach
Updated aug/03/2010 19:54
for en foreach
- syntax
for ($x=$begin_getal;
$x<=$eind_getal; #voorwaarde
$x+=$increment)
{
<perl code>
}
|
foreach $x (@lijst)
{
<perl code>
}
|
- for
De gewone for is een standaard speelgoed voor all-round programmeurs. for telt van een begingetal tot een eindgetal, met een vermeerdering of vermindering (step of increment) bij elke doorloop. Zodra de voorwaarde vervult is stopt de lus.
Het gebruik is makkelijker dan de uitleg, en ligt ook nogal voor de hand. Bekijk eerst het voorbeeld faculteit en maak daarna zelf een oefening die alle kwadraten afdrukt van de getallen 1 t.e.m. 10.
Pas op voor oneindige lussen: als de voorwaarde nooit wordt vervult, stopt het script nooit vanzelf.
Wij gaan nu faculteiten berekenen (tevens een voorbeeld op do while):
#!/usr/bin/perl
#
# faculteit: om faculteiten te berekenen
#
do
{
print "Geef een natuurlijk getal in kleiner dan 170: ";
$getal = <STDIN>;
chomp($getal);
$faculteit=1;
for ($x=1; $x<=$getal; $x++)
{
$faculteit = $faculteit * $x ;
}
if ($getal <=0) { $faculteit = 0 }
print "$getal ! = $faculteit \n";
} while ($getal >= 1)
- foreach
foreach haalt één voor één elementen uit een array of lijst.
Systeembeheerders vinden een foreach nuttiger dan een for. Een ls van $HOME geeft immers een lijst filenamen, vaak het begin van een backupscript. Hoe we die lijst opvragen en in een array stoppen, zonder bash commando's te gebruiken, zien we in een volgend hoofdstuk. De foreach methode lijkt bijzonder veel op de for uit bash.
We geven nu een voorbeeld met een zelfingevulde array:
#!/usr/bin/perl
#
# eachfor: voorbeeld op foreach
#
@matrix = ( aap , noot , mies , maan , roos , vis );
print "De originele lijst: @matrix\n";
foreach $x (@matrix)
{
print "$x zit in de matrix \n";
}
- default variable
We mogen de $x in het vorige eenvoudige foreach voorbeeld gewoon vergeten in de aanroep. In de foreach lus zelf wordt dan de default variable $_ gebruikt.
#!/usr/bin/perl
#
# eachfor2: voorbeeld op foreach en default variable
#
@matrix = ( aap , noot , mies , maan , roos , vis );
print "De originele lijst: @matrix\n";
foreach (@matrix)
{
print "$_ zit in de matrix \n";
}
- foreach van hashes
syntax:
#!/usr/bin/perl
#
# fqdn: voorbeeld op foreach en hash
#
%fqdn_klant = ( 'Vanilla inc' , "brussels.com" ,
'World Media Group llc' , "paris.com" ,
'Internet Holdings inc' , "newyork.com" ,
'Michael Castello' , "paramaribo.com" );
foreach $key (keys %fqdn_klant)
{
print "Domain Name: $fqdn_klant{$key} is eigendom van $key\n";
}
- Meer over loops
http://www.tutorialspoint.com/perl/perl_loops.htm