Langage de programmation Perl
Les tableaux
Les tableaux peuvent être utilisés comme des ensembles ou des listes. Il sont précédés du caractère @ : @chiffres = (1,2,3,4,5,6,7,8,9,0); @fruits = (‘amande’,’fraise’,’cerise’); @alphabet = (‘a’..’z’); On fait référence àun élément du tableau par son indice : print$chiffre[1]; => ‘2’ print$fruits[0]; => ‘amande’ On peut affecter un tableau à un autre tableau : @alphanum= (@alphabet,@chiffre); => (‘a’,’b’,….,’z’,’1’,’2’,…..,’0’);
Remarque : on dispose d’une variable spéciale : $#tableau qui indique le dernier indice du tableau (égale àsa taille -1) : $fruits[$#fruits] => ‘cerise’ On peut référencer une partie d’un tableau : @fruits[0..1] => (‘amande’,’fraise’);
Accès au dernier indice et élément d’un tableau:
$rocks[0] = ‘bedrock’;# le 1-er élément du tableau … $rocks[99] = ‘schist’; # le dernier élément du tableau …
$end = $#rocks; # 99, accès au dernier indice du tableau $number_of_rocks= $end + 1; # nombre d’éléments du tableau $rocks[ $#rocks ] = ‘hard rock’; # le dernier élément du tableau
$rocks[ -1 ] = ‘hard rock’; # accès au dernier élément avec -1 $dead_rock= $rocks[ -3 ]; # on obtient ‘bedrock’ –le 1-er élément du tableau $rocks[ -200 ] = ‘crystal’; # erreur fatale!
Quelques exemples: $fred[0] = « yabba »; $fred[1] = « dabba »; $fred[2] = « doo »; $number= 2.71828; print$fred[$number-1]; # la même chose que $fred[1] $blank= $fred[ 142_857 ]; # un élément non-utilisédu tableau contient undef $blanc = $mel; # la variable $melnon-utilisée donne aussi undef $rocks[0] = ‘bedrock’; # un élément du tableau … $rocks[1] = ‘slate’;# un autre élément du tableau … $rocks[2] = ‘lava’; # et un autre … $rocks[99] = ‘schist’; # maintenant il y a 96 éléments undef
Exemples des tableaux: (« fred », 4.5) # deux valeurs « fred » et 4.5 (1..5) # la même chose que (1, 2, 3, 4, 5) (1.7..5.7) # la même chose, mais les deux nombres seront tronqués (5..1) # tableau vide : » .. » on compte seulement en avant (0, 2..6, 10, 12) # la même chose que (0, 2, 3, 4, 5, 6, 10, 12) ($m..$n) # l’intervalle déterminépar les valeurs courantes de $m et $n (0..$#rocks)# les indices du tableau rock du diapo précédent ($m, 17)# deux valeurs: la valeur courante de $m et 17 ($m+$o, $p+$q) # les sommes de 2 variables (« fred », « barney », « betty », « wilma », « dino ») # tableau des chaînes de caractères qw( fredbarneybettywilmadino) # la même chose que la ligne précédente
Assignations des valeurs aux tableaux: ($fred, $barney, $dino) = (« flintstone », « rubble », undef); @rocks = qw/ bedrockslatelava /; @tiny= ( ); # le tableau vide @giant= 1..1e5; # un tableau avec 100,000 éléments Les fonctions pop, push, shift et unshift: @array= 5..9; $fred= pop(@array); # $fredsera égal à9, @arrayest comme suit: (5, 6, 7, 8) push(@array, 0); # @array@arrayest maintenant comme suit: (5, 6, 7, 8, 0) push @array, 8; # @array@arrayest maintenant comme suit: (5, 6, 7, 8, 0, 8) @array= qw# dinofredbarney#; $m = shift(@array); # $m sera égale à »dino », @arrayest comme suit: (« fred », « barney ») unshift(@array, « claude »); # @arrayest comme suit: (« claude », « fred », « barney »)
Structure de contrôle foreach: foreach$rock (qw/ bedrockslatelava /) { print »One rock is$rock.\n »; # Affiche les noms de 3 éléments du tableau @rock }
Variable par défaut$_: foreach(1..10) { # utilise $_ par défaut print »I cancount to $_!\n »; }
$_ = « ABCD abcd\n »; print; # affiche $_ par défaut
Opérateur reverse: @fred= 6..10; @barney= reverse(@fred); # donne 10, 9, 8, 7, 6 @wilma= reverse 6..10; # donne la même chose, mais sans un autre tableau @fred= reverse @fred; # ajoute le résultat dans le même tableau reverse @fred; # Erreur ! –ne change pas @fred
Opérateur sort: @rocks = qw/ bedrockslaterubblegranite /; @sorted= sort(@rocks); # donne bedrock, granite, rubble, slate @back = reverse sort @rocks; # les valeurs varieront de slateàbedrock @rocks = sort @rocks; # ajoute le résultat ordonnédans le même tableau @numbers= sort 97..102; # donne 100, 101, 102, 97, 98, 99