Notions de base la programmation de Perl
Perl, un rétroacronyme pour Practical Extraction and Reporting Language, est un langage de programmation créé par Larry Wall en 1987. Perl intègre des fonctionnalités du langage C et des langages de scripts sed, awk et shell (sh). Perl est très populaire pour l'administration du système.
Sortie
Voici comment on peut sortir du texte à l'écran, ou en informatique STDOUT (sortie standard).
#!/usr/bin/perl -w print "Hello"
Variables
En informatique, les variables sont un nom symbolique associé à une valeur et dont la valeur associée peut être changé.
#!/usr/bin/perl -w my $num=5; my $chr='a'; my $str="This is a string"; print "Number is $num\n"; print "Character is \'$chr\'\n"; print "String is \"$str\"\n";
Constantes
En la programmation, une constante est une valeur qui ne peut pas être modifiée pendant l'exécution d'un programme. Malheureusement, Perl ne supporte pas le concept de constantes. La fonctionnalité peut être stimulée avec le module «constant».
#!/usr/bin/perl -w use constant PI => 3.1415926; print "@{[ PI ]}\n";
Arithmétique
Comme tout langage moderne, Perl a un support intégré pour l'arithmétique.
#!/usr/bin/perl -w # integer arithmatic my ($width, $length) = (5,6); my $area=$length * $width; print "The area of a square (width=$width, length=$length) is $area.\n"; # boolean logic my ($true, $false) = (1,0); my $result=$true && $false || $true; print "The statement (true AND false OR true) is $result.\n";
#!/usr/bin/perl -w my ($pi, $radius) = (3.1415927, 3.0); my $area=$pi * $radius ** 2; print "The area of a circle (radius=2) is $area.\n";
#!/usr/bin/perl -w my $pi = 3.1415927; print "The cosine of pi / 4 is: ", cos($pi / 4.0);
Entrée
C'est la façon d'obtenir la saisie au clavier, ou en informatique STDIN (entrée standard).
#!/usr/bin/perl -w print "Enter your name: "; # print prompt my $name=<>; # acquire string input including newline chomp $name; # strip newline print "Hello $name" # output result using variable
Choix
La branche est un point où un flux logiciel est modifié. Essentiellement, le logiciel choisit un chemin après l'évaluation.
#!/usr/bin/perl -w print "Input a number: "; my $Number=<>; chomp $Number; if ( $Number > 0 ) { print "Number is greater than 0\n"; } elsif ( $Number < 0 ) { print "Number is less than 0\n"; } else { print "Number is 0\n"; }
#!/usr/bin/perl -w use v5.10.1; print "Input a character: "; $keypress=getc(STDIN); # given construction given ($keypress) { when (/[[:lower:]]/) { print "Lowercase letter\n"; } when (/[[:upper:]]/) { print "Uppercase letter\n"; } when (/[[:digit:]]/) { print "Digit\n" } default { print "Punctuation, whitespace, or other\n"; } }
#!/usr/bin/perl -w use v5.14; print "Input a character: "; my $keypress=getc(STDIN); for ($keypress) { print "Lowercase letter\n" when /[[:lower:]]/; print "Uppercase letter\n" when /[[:upper:]]/; print "Digit\n" when /[[:digit:]]/; default { print "Punctuation, whitespace, or other\n"; } }
#!/usr/bin/perl -w print "Input a character: "; $keypress=getc(STDIN); if ($keypress =~ /[[:lower:]]/) { print "Lowercase letter\n"; } elsif ($keypress =~ /[[:upper:]]/) { print "Uppercase letter\n"; } elsif ($keypress =~ /[[:digit:]]/) { print "digit\n"; } else { print "Punctuation, whitespace, or other\n"; }
Boucle
Une boucle est une séquence d'instructions qui est spécifié une fois mais qui peut être réalisée plusieurs fois de suite.
Avec Perl, il y a six différentes structures de boucle.
- do … while (expression)
- do … until (expression)
- while (expression) …
- until (expression) …
- for élément (ensemble)
- for (expression; expression ; expression)
#!/usr/bin/perl -w # while construction my $count=10; while ($count > 0) { print "Count is $count\n"; $count--; }
#!/usr/bin/perl -w # for (;;) construction for (my $count = 10; $count > 0; $count--) { print "Count is $count\n"; }
#!/usr/bin/perl -w # for (..) construction for my $count (reverse 1..10) { print "Count is $count\n"; }
#!/usr/bin/perl -w #until construction my $answer=""; until ($answer eq "quit") { print "Enter your name (quit to exit): "; chomp($answer = <>); print "Hello $answer\n" if ($answer ne "quit"); }
#!/usr/bin/perl -w #until construction do { print "Enter your name (quit to exit): "; chomp($answer = <>); print "Hello $answer\n" if ($answer ne "quit"); } until ($answer eq "quit")
#!/usr/bin/perl -w #until construction do { print "Enter your name (quit to exit): "; chomp($answer = <>); print "Hello $answer\n" if ($answer ne "quit"); } while ($answer ne "quit")
#!/usr/bin/perl -w #until construction my $answer=""; while ($answer ne "quit") { print "Enter your name (quit to exit): "; chomp($answer = <>); print "Hello $answer\n" if ($answer ne "quit"); }
#!/usr/bin/perl -w #spin loop construction while (1) { print "Enter your name (quit to exit): "; chomp($answer = <>); last if $answer eq "quit"; print "Hello $answer\n"; }
#foreach construction foreach $item (split /\s+/, `ls`) { if (-d $item) { print "$item is a directory\n" } else { print "$item is not a directory\n" } }
Tableaux
Un tableau est une structure de données de base qui est un ensemble d'éléments, auquel on a accès à travers un numéro d'index.
#!/usr/bin/perl -w my @nicknames; # declare list for good form # insert one by one into list $nicknames[0]="bob"; $nicknames[1]="ed"; $nicknames[2]="steve"; $nicknames[3]="ralph"; $nicknames[4]="joe"; $nicknames[5]="deb"; $nicknames[6]="kate"; print "The total names are: ", scalar(@nicknames),"\n"; print "The names are: @nicknames \n";
#!/usr/bin/perl -w my @nicknames=qw(bob ed steve ralph joe deb kate); print "The names are: \n"; foreach my $name (@nicknames) { print " $name\n"; }
#!/usr/bin/perl -w my @nicknames=qw(bob ed steve ralph joe deb kate); print "The names are: \n"; for (my $count=0; $count < scalar(@nicknames); $count++) { print " nicknames[$count]=$nicknames[$count]\n" }
Tableaux associatifsi
Un tableau associatif est est un type de données associant à un ensemble de clefs un ensemble correspondant de valeurs.
Perl prend en charge les tableaux associatif avec le hash.
#!/usr/bin/perl -w use strict; my %ages; # declare hash # add key/value one by one $ages{bob}=34; $ages{ed}=58; $ages{steve}=32; $ages{ralph}=23; $ages{deb}=46; $ages{kate}=19; # print keys and values print "Keys (names): ", join (" ", keys %ages), "\n"; print "Values (ages): ", join (" " , values %ages), "\n";
#!/usr/bin/perl -w use strict; # initialize hash w/ key/value pairs my %ages=(bob=>34, ed=>58, steve=>32, ralph=>23); # append another set of key/value pairs into hash %ages=(%ages, deb=>46, kate=>19); # enumerate through hash and print key/value pairs print "The ages are: \n"; foreach my $name (keys %ages) { print " ages[$name]=$ages{$name}\n"; }