précédant | suivant | sommaire | retour(perl)

Les fonctions liste de Perl (ici: reverse, pop, pushshift et unshift)

Voici quelques scripts qui vous montrent le comportement de ces fonctions:

#!/usr/bin/perl -w
# remd: essai de fonctions (pop, push,shift, unshift et reverse) sur une liste
# pour étudier le comportement de chacune. .
# il tourne, fonction vues shift, unshift et push.
# alain adelmar Janvier 2001

@a=(0..9);
@b=("a".."z");
$esp="\n\n";
 

$temp="look_liste.log";
open(F,">$temp")ordie"no possible d'ouvrir lookliste $!";
print"Voyons comment ce comporte les fonctions 'pop, push, shift,
unshift'\n"
;
print"nous avons une liste '(a) de 0 à 9 et une autre (b) de a à z':\n";

print'",@a," donne: '.",@a,"."\n";
print'alors que "@a" donne: '."@a"."\n";
print'et que @a donne: '.@a."\n";
print'plus mieux ("@a") donne: '."(@a)"."#\n";
print'that all, maintenant avec foreach $a(@a)'."\n";
foreach$a(@a){
print$a."\n";
}

print"\nidem pour b\n";

foreach$b(@b){
print$b."\n";
}
 

print"voulez vous ajouter quelques éléments à a ?\n";
chomp($resp=<STDIN>);

while(!continu($resp)){
print"alors entrez un element:\n";
$elmnta=<STDIN>;
print"Vous avez entré $elmnta\n";
chomp$elmnta;
$ua++;
@a=("$elmnta","@a");
print"maintenant la liste contient:\n(@a)\n";
print"voulez vous en insérer un autre?\n";
chomp($resp=<STDIN>);
}

print"Et maintenant, voulez vous en ajouter à b\n";
chomp($resp=<STDIN>);
while(!continu($resp)){
print"alors entrez un element: \n";
$elmntb=<STDIN>;
print"Vous avez entré: $elmntb\n";
chomp$elmntb;
$ub++;

@b=(@b,"$elmntb");
print"maintenant la liste b contient: \n";
print"(@b)";
print"voulez vous en insérer un autre?\n";
chomp($resp=<STDIN>);
}
 

$nela=10+$ua;# nombre d'element de @a.
$nelb=24+$ub;# nombre d'element de @b.

print"récap\t la liste a (de $nela elements) contient:\n (@a)\n";
print"et la liste b de $nelb elements contient:\n (@b)\n";
#======espacement = $esp _ shift _
print"$esp avec la fonction shift le premier element est retourné mais oté
de la liste\n"
;
print'$y = shift(@a) => donnera:'."\n";
$y=shift(@a);
print"$y".'= shift(@a) et il reste dans @a'."(@a)\n";
print"$esp";
print'$z = shift(@b) => donnera:'."\n";
$z=shift(@b);
print"$z".'= shift(@b) et il reste dans @b'."(@b)\n";
print"$esp";
#======espacement = $esp _ unshift _

print'unshift fait le contraire de shift, au lieu d\'oter le premier elemnt
de la liste, il rajoute au debut de la liste les elements qui sucséderons a
la liste'
."\n";
print"exemple: voulez vous entrer un element?\n";

while(!continu($resp)){
print"alors entrez un element:\n";
$elmntua=<STDIN>;
chomp$elmntua;
unshift(@a,"$elmntua");
print'avec la fonction unchift(@a, "element_a) la liste contient:'.
"\n(@a]\n";
print"voulez vous en insérer un autre?\n";
chomp($resp=<STDIN>);
}

print"Et maintenant, voulez vous en ajouter à b\n";
chomp($resp=<STDIN>);
while(!continu($resp)){
print"alors entrez un element: \n";
$elmntub=<STDIN>;
chomp$elmntub;
unshift(@b,"$elmntub");
print'avec la fonction unchift(@b, "element_b) la liste contient:'.
"\n(@b)\n";
print"voulez vous en insérer un autre?\n";
chomp($resp=<STDIN>);
}
 

closeF||die"remerde ca coince en fermeture $!";
 

subcontinu{
my($reponse)=@_;

if($reponse=~/^o/){
return0;
}
elsif($reponse=~/^n/){
return1;
}
else{
print"Veuillez repondre par Oui ou par non\n";
return0;
}
}

END;

============lemêmemaiscré unfichieroutoutestconsigné parpush

#!/usr/bin/perl -w
# remd: essai de fonctions (pop, push,shift, unshift et reverse) sur une 
liste
# pour étudier le comportement de chaqu'une.
# alain adelmar Janvier 2001

@a=(0..9);
@b=("a".."z");

$temp="look_liste.log";
$x="x"x70;
$ph1="Voyons comment ce comporte les fonctions 'pop, push, shift,
unshift'\n"
;
$ph2="nous avons une liste '(a) de 0 à 9 et une autre (b) de a à z':\n";
$rema="Ce fichier est automatiquement généré par le prog ECf_ls_push.pl
donc\n en perl.\nremd: créé par alain Adelmar Janvier 2001.\n$x\n"
;
push@contenu,$rema;
print"$ph1"."$ph2";
push@contenu,("$ph1"."$ph2");
$phe1='",@a," donne: '.",@a,"."\n".'alors que "@a" donne: '."@a".
"\n".'et que @a donne: '.@a."\n".'plus mieux ("@a") donne: '.
"(@a)"."\n".'that all, maintenant avec foreach $a(@a)'."\n";
push@contenu,$phe1;
print"$phe1";
#=========================signature=============
$aa='# [_A_d_e_l_m_a_r_]   [8O°) [8O*) [8o. |8*) |:o. [8. [8O{`}   [8O°)
#  ===============                                   *       ***
# [_a____l_a_i_n__] aadelmar@free.fr http://www.multimania.com/aadelmar/'
;
#==============================================
foreach$a(@a){
print$a."\n";
push@contenu,"$a\n";
}

print"\nidem pour b\n";

foreach$b(@b){
print$b."\n";
push@contenu," $b,";
}
$rph="\nvoulez vous ajouter quelques éléments à a ?\n";

push@contenu,$rph;
print$rph;
chomp($resp=<STDIN>);

while(!continu($resp)){
print"alors entrez un element:\n";
$elmnta=<STDIN>;
chomp$elmnta;

$voir1="Vous avez entré $elmnta\n";
print$voir;
push@contenu,$voir;
$ua++;
@a=("$elmnta","@a");
$ph3="maintenant la liste contient:\n(@a)\n";
print$ph3;
push@contenu,$ph3;
$vv="voulez vous en insérer un autre?\n";
print$vv;
push@contenu,$vv;
chomp($resp=<STDIN>);
}
$phb1="Et maintenant, voulez vous en ajouter à b\n";
print$phb1;
push@contenu,$phb1;
chomp($resp=<STDIN>);
while(!continu($resp)){
print"alors entrez un element: \n";
$elmntb=<STDIN>;
$voir2="Vous avez entré $elmntb\n";
print$voir2;
push@contenu,$voir2;
chomp$elmntb;
$ub++;

@b=(@b,"$elmntb");
$nw1="maintenant la liste b contient: \n"."(@b)";
print$nw1;
push@contenu,$nw1;
$vv="voulez vous en insérer un autre?\n";
print$vv;
push@contenu,$vv;
chomp($resp=<STDIN>);
}
$nela=10+$ua;# nombre d'element de @a.
$nelb=24+$ub;# nombre d'element de @b.

$recap="récap\t la liste a (de $nela elements) contient:\n (@a)\n";
print$recap;
push@contenu,$recap;
$recapb="et la liste b de $nelb elements contient:\n (@b)\n\n$aa\n";
print$recapb;
push@contenu,$recapb;
# print "et la liste b de $nelb elements contient:\n (@b)\n";
open(F,">$temp")ordie"no possible d'ouvrir lookliste $!";
printF@contenu;
closeF||die"remerde ca coince en fermeture $!";
 

subcontinu{
my($reponse)=@_;

if($reponse=~/^o/){
return0;
}
elsif($reponse=~/^n/){
return1;
}
else{
print"Veuillez repondre par Oui ou par non\n";
return0;
}
}
 

END;

#=================== pop et reverse

#!/usr/bin/perl -w
# fonction etudier pop, reverse
# 23 janvier 2001 alain adelmar 33600 Pessac mailto=aadelmar@free.fr

print"considèrons deux listes:\na de 0 à 15 et \nb de a à z\n";
@a=(0..15);
@b=("a".."z");
print"tel que liste a:\n(@a)\n";
print"et\ntel que liste b:\n(@b)\n";
pop(@a);
print'pop(@a) donnera'."\t(@a)\n";
@ra=reverse(@a);
print'reverse(@a) donnera'."\t(@ra)\n";
print"\n";
pop(@b);# si l'on ecrit @pa = pop(@a) seul le nmbr elmnt sera 
retourne
print'pop(@b) donnera'."\t(@b)\n";
@rb=reverse(@b);
print'reverse(@b) donnera'."\t(@rb)\n";
END;
 

N'hésitez pas à me contacter, je me ferai un plaisir d'apprendre ou de vous éclairer jusqu'ou je peux. aadelmar@wanadoo.fr



précédant | suivant | sommaire | retour(perl)