sub Nom_de_la_fonction {
Instruction_1;
Instruction_2;
. . . . .
Instruction_n;
}
| Programme fonc1.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
# Declaration de la fonction
sub Dire_bonjour {
print ("Bonjour la compagnie.\n");
}
&Dire_bonjour;
|
c:\progs> perl fonc1.plent
Bonjour la compagnie.
c:\progs>
|
| Programme fonc2.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
# Declaration de la fonction
sub Dire_bonjour {
print ("Bonjour la compagnie.\n");
}
$a=10 + &Dire_bonjour;
print "$a";
|
c:\progs> perl fonc2.plent
Bonjour la compagnie.
11
c:\progs>
|
| Programme fonc3.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
# Declaration de la fonction
sub lecture {
$ligne = <STDIN>;
$ligne =~s/^\s+|\s*\n$//g;
@nombres = split(/\s+/,$ligne);
}
$somme = 0;
&lecture;
foreach $nombre (@nombres) {
$somme += $nombre;
}
$long = @nombres;
$moy = $somme / $long;
print ("\nSomme des $long éléments : ");
print ("$somme.\n");
print Moyenne : $moyenne.\n");
|
c:\progs> perl fonc3.plent
1 2 3 4 5 6 7 8 9
Somme des 9 éléments : 45.
Moyenne : 5.
c:\progs>
|
| Programme fonc4.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
# Declaration de la fonction<
sub exp {
$x ** $y;
}
$x=10;
$y=2;
$a=10 + &exp;
print "Valeur de a : $a\n";
|
c:\progs> perl fonc4.plent
Valeur de a : 110
c:\progs>
|
| Programme fonc5.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
# Declaration de la fonction
sub liste {
($x,$y);
}
$x=10;
$y=2;
@a = &liste;
print "Valeur de a : @a\n";
|
c:\progs> perl fonc5.plent
Valeur de a : 10 2
c:\progs>
|
| Programme fonc6.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
# Declaration de la fonction
sub maximum {
if ($x > $x) {
$x;
} else {
$x
}
}
$x=10;
$y=2;
@a = &maximum;
print "Valeur de a : @a\n";
|
c:\progs> perl fonc6.plent
Valeur de a : 10
c:\progs>
|
| Programme fonc7.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
# Declaration de la fonction.
sub lecture {
$ligne = <STDIN>;
$ligne =~s/^\s+|\s*\n$//g;
split(/\s+/,$ligne);
}
$somme = 0;
@nombres = &lecture;
foreach $nombre (@nombres) {
$somme += $nombre;
}
$longueur = @nombres;
$moyenne = $somme / $longueur;
print ("\nTotal des $longueur éléments : ");
print ("$somme.\n");
print ("Moyenne : $moyenne.\n");
|
c:\progs> perl fonc7.plent
1 2 3 4 5 6 7 8 9
Total des 9 éléments : 45.
Moyenne : 5.
c:\progs>
|
| Programme fonc8.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
sub total {
$somme = 0;
$ligne = <stdin>;
$ligne =~s/^\s+|\s*\n$//g;
@nombres = split(/\s+/,$ligne);
$index = 0;
while ($nombres[$index] ne ""){
$somme += $nombres[$index++];
}
}
$somme = 0;
$total = &total;
print ("\nTotal des éléments : $total.\n");
|
c:\progs> perl fonc8.plent
1 2 3 4 5 6 7 8 9
Total des éléments :.
c:\progs>
|
while ($nombre[$index] ne ""){
$somme += $nombres[$index++];
}
$somme += $nombres[$index++];
$nombre[$index] ne ""
| Programme fonc9.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
sub total {
$somme = 0;
$ligne = <stdin>;
$ligne =~s/^\s+|\s*\n$//g;
@nombres = split(/\s+/,$ligne);
$index = 0;
while ($nombres[$index] ne ""){
$somme += $nombres[$index++];
}
$somme;
}
$somme = 0;
$total = &total;
print ("\nTotal des éléments : $total.\n");
|
c:\progs> perl fonc9.plent
1 2 3 4 5 6 7 8 9
Total des éléments : 45.
c:\progs>
|
| Programme fonc10.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
sub total {
$somme = 0;
$ligne = <stdin>;
$ligne =~s/^\s+|\s*\n$//g;
if ($ligne eq "") {
return ("Erreur");
}
@nombres = split(/\s+/,$ligne);
$index = 0;
while ($nombres[$index] ne ""){
$somme += $nombres[$index++];
}
return $somme;
}
$total = &total;
if ($total eq "Erreur") {
print ("Pas de données à traiter.\n");
} else{
print ("Total des éléments: $total.\n");
}
|
c:\progs> perl fonc10.plent 1 2 3 4 5 6 7 8 9 Total des éléments : 45. c:\progs> perl fonc10.plent Pas de données à traiter. c:\progs> |
| Programmefonc11.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl
print ("Affectation à une liste.\n");
@liste = &ma_procedure;
print ("Affectation à un scalaire.\n");
$scalaire = &ma_procedure;
sub ma_procedure {
if (wantarray()) {
print ("Retour de liste.\n\n");
} else{
print ("Retour de scalaire.\n\n");
}
}
|
c:\progs> perl fonc11.plent
Affectation à une liste.
Retour de liste.
Affectation à un scalaire.
Retour de scalaire.
c:\progs>
|
my $var;
my @lst = (0..9);
my ($somme, $ligne, @mots) = (0,"****","Vide");
local $s = 3,14159;
local @c;
local ($index, $retour) = (0,"Erreur");
local (@phrase) ("Ceci"," est"," une"," phrase.");
| Programme fonc12.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
@suite = (1..10);
print ("le produit des valeurs\n");
print ("@suite\n");
print ("est egal a : ";
print &multiplier (@suite);
print "\nLa variable prod est à $prod.";
# Declaration de la fonction
sub multiplier {
local ($prod);
$prod = 1;
foreach $_ (@_) {
$prod *= $_;
}
$prod;
}
|
c:\progs> perl fonc12.plent
le produit des valeurs
1 2 3 4 5 6 7 8 9 10
est egal a : 3628800
La variable prod est à .
c:\progs>
|
| Programme fonc13.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
# Déclaration de la fonction.
sub faire_le_total {
my ($somme, $ligne, @mots);
my ($index, $retour);
$somme = 0;
$ligne = <STDIN>;
if ($ligne eq "") {
return ("fini");
}
$ligne =~s/^\s+|\s*\n$//g;
@mots = split(/\s+/, $ligne);
$index = 0;
while ($mots[$index] ne "") {
$somme += $mots[$index++];
}
$retour = $somme;
}
$somme = 0;
while (1) {
$total = &faire_le_total;
last if ($total eq "fini");
print ("Total de la ligne : $total.\n");
$somme += $total;
}
print ("Total général : $somme.\n");
|
c:\progs> perl fonc13.plent 1 2 3ent Total de laligne : 6. 4 5 6ent Total de laligne : 15. 7 8 9ent Total de la ligne : 24. ctrlD Total général : 45. c:\progs> |
shift (@liste);
my $a;
while ($a = shift (@_){
# Le corps de la fonction.
# travaille sur la variable $a
}
| Programme fonc14.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
# Declaration de la fonction
sub Dire_bonjour_a {
print ("Bonjour $_[0].\n");
}
&Dire_bonjour_a ("Francis");
|
c:\progs> perl fonc14.plent
Bonjour Francis.
c:\progs>
|
| Programme fonc15.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
# Declaration de la fonction
sub ecrire {
print ("$_[0] $_[1] $_[2] \n");
}
&ecrire ("Adieu","monde","cruel");
|
c:\progs> perl fonc15.plent
Adieu monde cruel
c:\progs>
|
| Programme fonc16.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
# Declaration de la fonction
sub ecrire {
print ("$_[0] $_[1] $_[2] \n");
}
$x = "monde";
&ecrire ("Adieu",$x,"cruel");
|
c:\progs> perl fonc16.plent
Adieu monde cruel
c:\progs>
|
| Programme fonc17.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
# Declaration de la fonction
sub ajouter {
$_[0] + $_[1];
}
$x = 3; $y = 5;
print "La somme de $x et de $y est ";
print &ajouter ($x,$y);
|
c:\progs> perl fonc17.plent
La somme de 3 et de 5 est 8
c:\progs>
|
| Programme fonc18.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
sub plus_grand_que {
local ($n,@liste);
($n,@liste) = @_;
local(@resultat);
foreach $_ (@liste) {
if ($_ > $n) {
push (@resultat,$_);
push (@resultat," ");
}
}
@resultat;
}
@appel = (1 .. 20);
$lim = 10;
print "Liste des elements > $lim :\n";
print &plus_grand_que (10,@appel);
|
c:\progs> perl fonc18.plent
Liste des elements > 10 :
11 12 13 14 15 16 17 18 19 20
c:\progs>
|
| Programme fonc19.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
# Declaration de la fonction
sub multiplier {
local $prod;
$prod = 1;
foreach $_ (@_) {
$prod *= $_;
}
return $prod;
}
<STDIN>;
split(/ /);
print ("le produit des valeurs\n");
print ("@suite\n");
print ("est egal a : ";
print &multiplier ();
|
c:\progs> perl fonc19.plent 1 2 3 4 5 6 7 8 9 10ent le produit des valeurs 1 2 3 4 5 6 7 8 9 10 est egal a : 3628800 c:\progs>perl fonc19.plent 1 2 3 4 5ent le produit des valeurs 1 2 3 4 5 est egal a : 120 c:\progs>perl fonc19.plent 1 2 3ent le produit des valeurs 1 2 3 est egal a : 6 c:\progs> |
| Programme fonc20.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
# Declaration de la fonction
sub ecrire_la_somme {
my($n1, $n2, $n3) = @_;
my($total);
print ("\nNombres proposés :\n");
print ("$n1, $n2 et $n3.\n");
$total = $n1 + $n2 + $n3;
print ("\nSomme : $total.\n");
}
print ("Somme de trois nombres.\n");
print ("Premier nombre ? ");
chomp ($n1 = <STDIN>);
print ("Second nombre ? ");
chop ($n2 = <STDIN>);
print ("Troisième nombre ? ");
chop ($n3 = <STDIN>);
ecrire_la_somme ($n1, $n2, $n3);
|
c:\progs> perl fonc20.plent Somme de trois nombres. Premier nombre ? 1285ent Second nombre ? 32584ent Troisième nombre ? 251468ent Nombres proposés : 1285, 32584 et 251468. Somme : 285337. c:\progs> |
| Programme fonc21.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
# Declaration de la fonction
sub compte {
my ($ligne,$vide) = @_;
my ($compteur);
if ($vide eq "") {
@elements = split (//, $ligne);
} else {
@elements = split (/$vide/,$ligne);
}
$compteur = @elements;
}
$nbmots = $nbcar = 0;
$carvide = "";
$motvide = "\\s+";
while ($ligne = <stdin>){
$nbcar += &compte($ligne,$carvide);
$ligne =~s/^\s+|\s+$//g;
$nbmots += &compte($ligne,$motvide);
}
print ("\n$nbmots mots.\n");
print ("$nbcar caractères.\n");
|
c:\progs> perl fonc21.plent Voici un texte qui comporte plusieurs lignesent la premiere ligneent a laquelle succede une secondeent et une toisiemeent pour finir une quatriemeent CtrlD 22 mots. 135 caractères. c:\progs> |
| Programme fonc22.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
# Declaration de la fonction
sub compter {
my ($lignes) = @_;
my ($carvide,$motvide);
my ($nbcars,$nbmots);
my ($ligne,$nblignes);
my (@retour);
sub count {
my ($ligne,$forme) = @_;
my ($compte);
if ($forme eq "") {
@elements = split (//, $ligne);
} else {
@elements = split (/$forme/,$ligne);
}
$compte = @elements;
}
$carvide = "";
$motvide = "\\s+";
$nblignes = $nbcars = $nbmots = 0;
while (1) {
$ligne = <stdin>;
last if ($ligne eq "");
$nblignes++;
$nbcars += &count($ligne, $carvide);
$line =~ s/^\s+|\s+$//g;
$nbmots += &count($ligne, $motvide);
last if ($nblignes == $lignes);
}
@retour = ($nblignes, $nbmots, $nbcars);
}
print ("Nombre maximum de lignes ? \n");
chomp ($max = <STDIN>);
($nbl, $nbm, $nbc) = &compter($max);
print ("\n$nbl lignes lues\n");
print ("$nbm mots\n");
print ("$nbc caractères\n");
|
c:\progs> perl fonc22.plent Nombre maximum de lignes ? 5ent Ligne unent la seconde ligneent une toisieme ligneent la quatriemeent la cinquieme et derniereent 5 lignes lues 14 mots. 84 caractères. c:\progs> |