précédant | suivant | sommaire
  
exemple avec les fonctions de manipulation de listes map et grep
  
Voici un script qui fait appel aux fonctions map et grep. Ces deux fonctions crées une nouvelle liste.
grep (EXPR, LIST)
grep évalue chaque element de LIST suivant EXPR , tout element conncordant et placer dans une nouvelle liste.
On pourrai dire que grep créé une sous-liste composée des elements de LIST qui rétourne vrai à EXPR.
On peu dire aussi que:
exemple:

@nw_list = grep($_ =~ /^doc/, @liste);

ce qui signifie:

foreach element(@LISTE) {
          if (EXPR) {
                 push @nw_list $element;
          }
}
 
pour map c'est le même principe seulement map ne retourne pas une sous-liste de LIST mais une nouvelle liste créée par la modification de chaque element de la LIST par EXPR:
map(EXPR, LIST)
map applique EXPR à chaque element de LIST et pousse le résultat dans une nouvelle list.
On pourrai dire que map créé une nouvelle liste issue du résultat d'EXPR appliquer à tout les elements de LIST.
On pourrai dire que le résultat d'EXPR appliquer sur chaque élément de LIST donne une nouvelle liste
exemple:
@nw_liste = map($_*2, @liste);
(2, 4, 6, 8) = map($_*2, (1, 2, 3, 4));

Voilà un petit script que vous pouvez placer directement dans un fichier, le rendre executable par
chmod +x nom_du_fichier.pl
puis executer par:
./nom_du_fichier.pl
 
 


  
  
#!/usr/bin/perl
  # remd: exo avec les fonctions map avec format de sortie.
  # il tourne bien alain Adelmar <aadelmar@free.fr>
  
  
  
  format STDOUT_TOP =
  Page $<<
  
  Initial Double Quart Interet 4%
  ======= ====== ===== ==========
  .
  
  $i, $element;
  @ls_init = (1..40);
  @interet_4p100 = map(($_*4)/100, @ls_init);
  @ls_quart = map (($_*0.25), @ls_init);
  @ls_double = map($_*2, @ls_init);
  
  foreach $element(@ls_init) {
          write;
          $i++;   
  }
  
  format STDOUT=
  @<<<<< @<<<<<< @<<<<<<< @<<<<<<<
  $ls_init[$i], $ls_double[$i], $ls_quart[$i], $interet_4p100[$i]
  .
  
  END;