[PERL] unshift et les tableaux de tableaux
stéphane
-
lami20j Messages postés 21506 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21506 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Bonjour à tous,
Je ne parviens pas à réaliser un unshift sur un tableau à 2 dimensions. J'ai créé ce tableau pour stocker les lignes d'un fichier. J'obtiens par exemple après mise en tableau :
@tab = ("un","deux","trois",
"quatre", "cinq", "six",
"sept","huit","neuf")
J'aimerais maintenant écrire un commentaire, parfois, à la fin d'une ligne; ceci donnerait :
@tab = ("un","deux","trois", "un commentaire",
"quatre", "cinq", "six", "un autre commentaire"
"sept","huit","neuf")
J'ai essayé avec un unshift, mais le résultat s'est montré assez abomibable, et le recours aux références m'a quelque peu rebuté ....
Si vous avez des suggestions, merci d'avance,
Stéphane
Je ne parviens pas à réaliser un unshift sur un tableau à 2 dimensions. J'ai créé ce tableau pour stocker les lignes d'un fichier. J'obtiens par exemple après mise en tableau :
@tab = ("un","deux","trois",
"quatre", "cinq", "six",
"sept","huit","neuf")
J'aimerais maintenant écrire un commentaire, parfois, à la fin d'une ligne; ceci donnerait :
@tab = ("un","deux","trois", "un commentaire",
"quatre", "cinq", "six", "un autre commentaire"
"sept","huit","neuf")
J'ai essayé avec un unshift, mais le résultat s'est montré assez abomibable, et le recours aux références m'a quelque peu rebuté ....
Si vous avez des suggestions, merci d'avance,
Stéphane
3 réponses
-
Salut,
tu ne peux pas écrire des commentaires dans un tableau
Un tableau est un variable qui contient une liste des elements
Ce que tu as dans le tableau "un commentaire" est un element de la liste et pas un commentaire
Tu peux stocker les lignes d'un fichier dans un tableau de la façon suivante#!/usr/bin/perl use warnings;use strict; open LIRE,"fichier" or die "E/S : $!\n"; while ( <LIRE> ) { push @tab,$_; }Pour les commentaires tu peux faire comme ça#!/usr/bin/perl use warnings;use strict; my @tab = ("un","deux","trois"); # un commentaire @tab = (@tab,"quatre", "cinq", "six");# un autre commentaire @tab = (@tab,"sept","huit","neuf"); # un autre commentaireSi tu me dit exactement ce que tu veux, peut être je pourrai t'aider ;)
lami20j
P.S. Et je ne vois pas où tu as tableaux de tableaux -
Merci de ta réponse.
Je me suis effectivement mal exprimé : par "commentaire", je voulais dire ajouter du texte dans mon tableau (ce qui constituerait un commentaire pour l'utilisateur dans le fichier final, du type "cette ligne a été traitée", etc).
En gros : j'ouvre un fichier texte composé de lignes, et je le vide dans mon tableau. On peux dire schématiquement que je mets chaque mot dans un tableau, et ce tableau est stocké dans un tableau. Je me retrouve avec un tableau a 2 dimensions.
Je traite parfois ces lignes. Et c'est là que j'aimerais ajouter dans mon tableau quelques mots...-
Salut,
Bon ça fait un bon bout de temps que je n'ai pas travaillé avec PERL, mais si j'ai bine compris ton probleme, tu peux utiliser le concept de LIST. C'est une sorte de vecteur que tu peux mettre tout ce que tu veux: vecteurs, matrices, tableaux... c'est juste une voie qui vaut le coup d'explorer.
-
-
Re,
je ne suis toujours pas si j'ai bien compris.
pourquoi utiliser tableaux de tableaux.
Voilà comment je vois dans ton cas.
J'ai crée un fichier qui contient 3 lignes.lami20j@debian:~/trash$ cat steph.txt line 1 line 2 line 3
Je traite les lignes en mettant tout en majuscules.
Le script#!/usr/bin/perl use warnings;use strict; open LIRE,"steph.txt" or die "E/S : $!\n"; while ( <LIRE> ){ chomp; print uc($_)," - traitement de la ligne $.\n"; }Le résultatlami20j@debian:~/trash$ perl ccm_vider.pl LINE 1 - traitement de la ligne 1 LINE 2 - traitement de la ligne 2 LINE 3 - traitement de la ligne 3
lami20j
P.S. Si j'ai mal compris, tu peux me donner un exemple concret.