#!/usr/bin/perl -w
# remd: essai de fonctions (pop, push,shift, unshift et reverse)
sur une liste
# pour étudier le comportement de chacune. .
# alain adelmar Janvier 2001
@a = (0..9);
@b = ("a".."z");
$esp = "\n\n";
$temp = "look_liste.log";
open(F, ">$temp") or die "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>);
}
close F || die "remerde ca coince en fermeture $!";
sub continu {
my($reponse) = @_;
if ($reponse =~ /^o/) {
return 0;
}
elsif ($reponse =~ /^n/) {
return 1;
}
else {
print "Veuillez repondre par Oui ou par non\n";
return 0;
}
}
END;
============ le même mais cré un fichier ou tout est consigné par push
#!/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" x 70;
$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") or die "no possible d'ouvrir lookliste $!";
print F @contenu;
close F || die "remerde ca coince en fermeture $!";
sub continu {
my($reponse) = @_;
if ($reponse =~ /^o/) {
return 0;
}
elsif ($reponse =~ /^n/) {
return 1;
}
else {
print "Veuillez repondre par Oui ou par non\n";
return 0;
}
}
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;