Base perl
Fermé
flongo
Messages postés
53
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
9 décembre 2009
-
21 avril 2009 à 15:09
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 21 avril 2009 à 17:42
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 21 avril 2009 à 17:42
A voir également:
- Base perl
- Base de registre - Guide
- Formules excel de base - Guide
- Formules mathématiques de base - Télécharger - Études & Formations
- #1046 - aucune base n'a été sélectionnée - Forum MySQL
- Périphérique système de base ✓ - Forum Pilotes (drivers)
6 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
21 avril 2009 à 15:24
21 avril 2009 à 15:24
Salut,
Ton code n'as pas de sens.
Si $ligne content que 'ad' alors tu splites quoi?
Pour l'erreur de print, pas de backslash avant i
Et puis, charger le fichier dans un tableau ou $ligne=@fic[$i]; # j'attribue a ligne l'element i du tableau fic , c'est un peu tordu, non?
Ton code n'as pas de sens.
Si $ligne content que 'ad' alors tu splites quoi?
Pour l'erreur de print, pas de backslash avant i
print "l'identifiant message est : $ident_mess" ;
Et puis, charger le fichier dans un tableau ou $ligne=@fic[$i]; # j'attribue a ligne l'element i du tableau fic , c'est un peu tordu, non?
open FICHIER, "<P:\\Perl\\Message\\test_mess.txt" or die "Ce fichier n'existe pas!"; while(<FICHIER>){ next unless /^ad$/; my @tab=split /,/,$_; # mais il n'y a pas de séparateur pour split print "l'identifiant message est .....\n"; }Donne plutôt un morceau de ton fichier et dit ce que tu veux obtenir.
flongo
Messages postés
53
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
9 décembre 2009
21 avril 2009 à 15:31
21 avril 2009 à 15:31
En faite j'ai un fichier txt qui est composé de 2 lettres, une virgule apres et une valeurs derriere la virgule. Par exemple:
aa
ab,00000
ac,jfsklmgksj
ad,dfmjgsm
Ce qui est apres la virgule je dois le mettre dans un BDD.
Mais la particularité c'est que je dois verifier que les deux lettres existent bien dans mon fichier txt.
Il y a certaine lettre qui n'ont pas de virgule ni de valeur.Ce sont des points de repere en faite.
Voila ce que je veux faire!
Merci pour ton aide.
CDLT
aa
ab,00000
ac,jfsklmgksj
ad,dfmjgsm
Ce qui est apres la virgule je dois le mettre dans un BDD.
Mais la particularité c'est que je dois verifier que les deux lettres existent bien dans mon fichier txt.
Il y a certaine lettre qui n'ont pas de virgule ni de valeur.Ce sont des points de repere en faite.
Voila ce que je veux faire!
Merci pour ton aide.
CDLT
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
21 avril 2009 à 15:35
21 avril 2009 à 15:35
Re,
Si j'ai bien compris selon ton 1er et 2ème message, en fait ce ne sont que les lignes qui commencent avec ad qui t'interessent.
ad,dfmjgsm
Plus exact la valeur en gras.
Si j'ai bien compris selon ton 1er et 2ème message, en fait ce ne sont que les lignes qui commencent avec ad qui t'interessent.
ad,dfmjgsm
Plus exact la valeur en gras.
flongo
Messages postés
53
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
9 décembre 2009
21 avril 2009 à 15:42
21 avril 2009 à 15:42
Non ce sont toutes les lignes qui m'interessent mais je dois verifier qu'elles existent bien dans mon txt.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
21 avril 2009 à 15:46
21 avril 2009 à 15:46
Re,
Alors il faut que tu me donnes un exemple de ce que tu veux obtenir comme sortie, puisque je n'ai pas compris.
Alors il faut que tu me donnes un exemple de ce que tu veux obtenir comme sortie, puisque je n'ai pas compris.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
flongo
Messages postés
53
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
9 décembre 2009
21 avril 2009 à 15:55
21 avril 2009 à 15:55
OK!
Je veux une BDD avec comme vars les différentes lettres.
Les deux lettres sont les variables et les valeurs sont qui se trouvent apres la virgule sont les données.
Donc par exemple on a ce fichier :
aa
ab,00000
ac,jfsklmgksj
ad,dfmjgsm
La BDD que je veux obtenir est la suivante:
aa | ab | ac |ad
--------------------------------------
- |00000 | jfsklmgksj |dfmjgsm
Si c'est pas trop claire fais moi signe.
Merci.
cdlt
Je veux une BDD avec comme vars les différentes lettres.
Les deux lettres sont les variables et les valeurs sont qui se trouvent apres la virgule sont les données.
Donc par exemple on a ce fichier :
aa
ab,00000
ac,jfsklmgksj
ad,dfmjgsm
La BDD que je veux obtenir est la suivante:
aa | ab | ac |ad
--------------------------------------
- |00000 | jfsklmgksj |dfmjgsm
Si c'est pas trop claire fais moi signe.
Merci.
cdlt
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
21 avril 2009 à 17:42
21 avril 2009 à 17:42
Re,
Voici un exemple d'affichage
Toutefois, l'insertion dans la base pourra se faire directement dans la boucle sans avoir besoin des tableaux.
Quelque chose de ce genre.
A savoir qu'au lieu de <DATA> tu utiliseras <FICHIER>
Voici un exemple d'affichage
lami20j@debian:~/trash/ccm_perl$ cat ccm_bdd.pl #!/usr/bin/perl use strict;use warnings; my(@premier,@deuxieme); while(<DATA>){ next if /^$/; if (/^(\w){2},(.*)/){ push @premier,$1; push @deuxieme,$2; }else{ push @premier,$_; push @deuxieme,"-"; } } chomp(@premier); printf "%-10s|",$_ for @premier; print "\n"; printf "%-10s|",$_ for @deuxieme; print "\n"; __END__ aa ab,00000 ac,jfsklmgksj ad,dfmjgsm lami20j@debian:~/trash/ccm_perl$ perl ccm_bdd.pl aa |b |c |d | - |00000 |jfsklmgksj|dfmjgsm |
Toutefois, l'insertion dans la base pourra se faire directement dans la boucle sans avoir besoin des tableaux.
Quelque chose de ce genre.
A savoir qu'au lieu de <DATA> tu utiliseras <FICHIER>
#!/usr/bin/perl use strict;use warnings; my(@premier,@deuxieme); while(<DATA>){ next if /^$/; if (/^(\w){2},(.*)/){ #ici insertion dans BDD de $1 (1ère valeur) #ici insertion dans BDD de $2 (deuxième valeur) }else{ # valeur de contrôle #insertin dans la base de la valeur de contrôle #insertion dans la base de tiret (-) } } __END__ aa ab,00000 ac,jfsklmgksj ad,dfmjgsm