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

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


#!/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;
 
 



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