next up previous
Next: About this document ... Up: Examen Télécom 2 Unix Previous: Exercices de programmation AWK

Exercices de programmation Perl

Noubliez pas de commenter vos scripts Perl.

Vérifier:

  1. Décrivez le script Perl qui affiche les lignes de plus de 80 caractères.\fbox{\textbf{1~pts}}

    ..

      
    #!/usr/bin/perl
    # Affiche les lignes de plus de 80 caractères
    while (<>) { 
        print if (length > 80);
    }
    
    ..

  2. Décrivez le script Perl qui affiche le second champ de chaque ligne.\fbox{\textbf{1~pts}}

    ..

      
    #!/usr/bin/perl
    # Affiche les lignes qui possedent exactement deux champs
    
    while (<>) {             # chaque ligne lue est mémorisée dans $_
        split;               # $_ est découpé selon les espace dans le tableau @_
        print if ($#_ == 1); # l'indice max de @_ est $#_ (indice 1 = 2eme champ)
    }
    
    ..

  3. Donnez le script Perl qui permet d'enregistrer dans un fichier outpout.txt les lignes qui contiennent la chaîne "print".\fbox{\textbf{1~pts}}

    ..

      
    #!/usr/bin/perl
    # Affiche les lignes qui contiennent la chaine "print" 
    # dans le fichier "output.txt"
    
    open (FO, '> output.txt') || die "Impossible d'ouvrir: $!";
    while (<>) { 
        print (FO) if (/print/);
    }
    close (FO);
    
    ..

  4. A l'aide des tableaux associatifs, donnez le script Perl qui affiche la fréquence des mots d'un texte.\fbox{\textbf{3~pts}}

    ..

      
    #!/usr/bin/perl
    # Affiche la féquence des mots dans un texte
    
    # Parcours du fichier en paramètre
    while (<>) {                # Chaque ligne est mémorisée dans $_
        lc;                     # $_ tout en minuscules
        split("[^a-z0-9_]");    # Découpe $_ selon la ponctuation dans @_ 
        foreach $mot (@_) {     # Integre chaque champ dans le tableau 
                                # associatif %tab_freq s'il est non vide
            $tab_freq{$mot}++ if ($mot ne '');
        }
    }
    
    # Affichage
    foreach $mot (keys(%tab_freq)){
        printf "%s\t%d\n", $mot, $tab_freq{$mot};
    }
    
    ..



Olivier Fourmaux 2003-07-10