Salut j'ai un petit souci de concatenation, j'ai mon code qui me retourne des values avec
print $per_line_fh map {clean($_)} @$row ;
de par et d'autre j'aimerai que lors de la sortie ceci me retourne avec certains characteres de html par et d'autre, a savoir:
malheureusement lorsque je je tape le Charactere "" la commande perl map n'est plus active et donc le resultat n'est plus ce que je j'attend.
print $per_line_fh "<tr><td>map {clean($_)} @$row</td></tr>" ;
je sais pas si quelqu'un ici pourrai m'aider je pense que c'est un petit souci de concatenation.
NB: si je me suis mal explique, pose moi des questions, erpargne moi les injures qui ne permet pas d'avance, si je le dit c'est parceque il ya des gens sur ce forum qui m'ont lance des mots deplace la derniere fois.
Merci
# tes chaines et tes variables
Posté par NeoX . Évalué à 2.
il est normal que ta variable map… ne soit pas prise en compte elle se trouve DANS les "…"
essaie en ne mettant que tes chaines de caractere entre " " puis en laissant les variables telles quelles.
[^] # Re: tes chaines et tes variables
Posté par Henri . Évalué à -5.
J'avais deja eu a essayer ce que tu dis a savoir
malheureusement ca ne fonctionne pas.
[^] # Re: tes chaines et tes variables
Posté par Sacha Trémoureux (site web personnel) . Évalué à 2.
Ne grille pas d'étapes, essaie de comprendre les bases du langage avant d'aller plus loin.
[^] # Re: tes chaines et tes variables
Posté par NeoX . Évalué à 2.
et avec un espace autour des chaines/variables ?
pour bien differencier les chaines des variables ?
sinon d'apres notre moteur de recherche favori
http://lmgtfy.com/?q=perl+variables+concatenate+string
on trouve quelques exemples ici : http://www.perlmonks.org/?node_id=32418
qui parle d'utiliser le point (.) et peut-etre de faire la concatenation avant le print.
ex :
[^] # Re: tes chaines et tes variables
Posté par Henri . Évalué à -5.
voila l'erreur qu'il me revois sachant que la ligne 51 est la suivante
[^] # Re: tes chaines et tes variables
Posté par NeoX . Évalué à 2.
ah ben voila,
il dit clairement qu'il manque un operateur juste avant la chaine ""
bon il dit aussi que le code est fonctionnel mais buggé :
ou bien encore
[^] # Re: tes chaines et tes variables
Posté par Henri . Évalué à -5.
d'apres le lien que tu m'as envoye j'ai tout essaye malheureusement ce ne fonctionne pas, voila les essais
par ailleur il ya plusieur valeurs dans:
ca veut dire qu'au sortie j#attend quelque chose du genre
<tr><td>fault</td></tr>
<tr><td>3456</td></tr>
<tr><td>60000</td></tr>
<tr><td>value</td></tr>
<tr><td>80000</td></tr>
[^] # Re: tes chaines et tes variables
Posté par NeoX . Évalué à 2. Dernière modification le 13 août 2015 à 14:20.
ah oui, mais non
si tu fais le
print $per_line_fh $d
tu vas obtenir le contenu de
map {clean($_)} @$row
entre le<tr><td>
et le</td></tr>
soit ca :
ce qu'il te faut maintenant c'est une boucle qui va lire chaque valeur dans map…
pour le sortir ligne par ligne
[^] # Re: tes chaines et tes variables
Posté par Henri . Évalué à -5.
voila a quoi ressemble ma bouble mais malheureusement elle n'a que choisi une value qu'elle me revoit plusieurs fois
[^] # Re: tes chaines et tes variables
Posté par Henri . Évalué à -5.
je pense avoir trouve je te presente la solution dans un instant
[^] # Re: tes chaines et tes variables
Posté par Henri . Évalué à -5. Dernière modification le 13 août 2015 à 15:05.
je pense avoir trouve je te presente la solution dans un instant
mais li me donne encore un resultat a travailler car a la fin il me produit encore des caracteres supplementaires si tu observes a la fin il ya des caracteres sans valuer. et c'est encore un probleme
<table>
<tr><td>10000
</td></tr>
<tr><td>10000
</td></tr>
<tr><td>0
</td></tr>
<tr><td>50
</td></tr>
<tr><td>1
</td></tr>
<tr><td>
</td></tr>
</table>
[^] # Re: tes chaines et tes variables
Posté par Framasky (site web personnel) . Évalué à 2.
Pour tes valeurs nulles, il ne faut pas faire de print si la valeur de
$i
est nulle.Ça, ça devrait le faire :
Note le
if ($i)
sur la ligne de print.Tout simplement, ça ne fait fait le print que si $i n'est pasundef
,0
ou une chaîne vide.Tu peux aussi rajouter un
chomp $i
juste après la lignefor
car j'ai l'impression que ta fonctionclean
renvoie des valeurs avec un retour à la ligne à la fin.Being a sysadmin is easy. As easy as riding a bicycle. Except the bicycle is on fire, you’re on fire and you’re in Hell.
[^] # Re: tes chaines et tes variables
Posté par Henri . Évalué à -5.
Salut Framasky,
Merci bien tout est regle comme je le souhaitais
[^] # Re: tes chaines et tes variables
Posté par Henri . Évalué à -5.
J'aimerai savoir comment faire donne une direction a ma sortie "print"
c'est a dire que j'ai un dossier quelque par sur C:\Users\Documents\probe par exemple
et j'aimerai que lorsque j'execute mon code code.pl que toute ce que mon code
me revoit soit stocke dans un dossier par exemple "Probe".
je sais comment faire pour traite un Fichier se trouvant dans un dossier sur C: du genre
[^] # Re: tes chaines et tes variables
Posté par Framasky (site web personnel) . Évalué à 2.
Tu fais ça dans le mauvais sens j'ai l'impression.
Avec
Tu vas écraser ton fichier DATA2.csv, alors que j'ai plutôt l'impression que c'est le fichier qui te donne les résultats à mettre en forme.
Pour lire DATA.csv :
Et ensuite, pour écrire dans
C:\Users\Documents\probe\result.html
:C'était bien le sens de ta question ?
Ah, et sinon, pense à mettre des
die
quand tu ouvres un fichier, juste au cas où :Tu auras alors un message vite compréhensible (
Y a un problème pour ouvrir C:\Users\Documents\probe\result.html
) avec la raison pour laquelle perl n'a pas réussi à l'ouvrir (c'est le$!
qui donne ça).Being a sysadmin is easy. As easy as riding a bicycle. Except the bicycle is on fire, you’re on fire and you’re in Hell.
[^] # Re: tes chaines et tes variables
Posté par Henri . Évalué à -5.
Merci bien c'est pigé
[^] # Re: tes chaines et tes variables
Posté par Henri . Évalué à -6.
Salut Framasky,
j'ai texte l'exemple donc tu as site plus haut a savoir pour ecrire un fichier.
la il ne fonctionne pas car je pense a ma sortie je suis sense recevoir plusieurs Fichiers
il me renvoi qu'un fichier de son choix.
voila ce que j'ai tape dans mon code
quand il est de la sorte, je recois tous les fichiers
[^] # Re: tes chaines et tes variables
Posté par Framasky (site web personnel) . Évalué à 2.
Dans l'adresse de ton fichier dans lequel écrire, mets des
"
et pas des'
, sinon ton$file
n'est pas interprêté, donc c'est toujours le même fichier dans lequel il écrit (et il écrase ce qu'il y avait dedans).Being a sysadmin is easy. As easy as riding a bicycle. Except the bicycle is on fire, you’re on fire and you’re in Hell.
[^] # Re: tes chaines et tes variables
Posté par Henri . Évalué à -5.
meme avec le "" ca ne marche pas je l'avais aussi essaye
[^] # Re: tes chaines et tes variables
Posté par NeoX . Évalué à 2.
parce qu'il faudrait l'ecrire comme ca :
car tu veux concatener la variable $file à la chaine de caractere ".html"
[^] # Re: tes chaines et tes variables
Posté par Henri . Évalué à -5.
Malheureusement ce ne marche pas
[^] # Re: tes chaines et tes variables
Posté par NeoX . Évalué à 2.
la commande de base etant celle là :
il doit manquer des parentheses à ce que tu veux faire
si, meme si c'est un peu tard pour ton projet, je te recommande de lire ca :
http://shop.oreilly.com/product/0636920018452.do
en 3 semaines je savais programmer en perl au moins sur les trucs de bases,
ouvrir/ecrire/fermer un fichier,
faire des boucles,
des remplacements de chaines,
des operations,
des sorties structurées..
[^] # Re: tes chaines et tes variables
Posté par Henri . Évalué à -5.
Salut Neox,
je pourrai jamais pretendre que je sais programmer, mais je dirais toujours j'ai des connaissances de base.
si tu relis mes intervension avant les tiennes tu verras bien quel est mon veritable probleme.
[^] # Re: tes chaines et tes variables
Posté par NeoX . Évalué à 2.
ah oui, j'ai oublié de preciser le chemin ou va se ranger le fichier
ca reste une concatenation de chaine et de variable
pour avoir autant de fichier .html que de $file d'origine
et ranger tout ca dans c:\users\henri\mesdocuments\
[^] # Re: tes chaines et tes variables
Posté par Henri . Évalué à -5.
Salut Neox
malheureusement ca ne marche pas
[^] # Re: tes chaines et tes variables
Posté par NeoX . Évalué à 2.
et sinon, ca dit quoi ?
parce que "ca ne marche pas, ca n'aide pas"
la documentation de la fonction OPEN
http://perldoc.perl.org/functions/open.html
[^] # Re: tes chaines et tes variables
Posté par Henri . Évalué à -5.
Je dirai le probleme serai les "" parceque lorsque je les placent comme tu me conseil il ya les textes qui sont blaichit
[^] # Re: tes chaines et tes variables
Posté par NeoX . Évalué à 2. Dernière modification le 19 août 2015 à 11:42.
peux-tu nous copier/coller l'erreur que tu as quand tu lances avec telle ou telle combinaison dans ton OPEN ?
ca permettrait d'en savoir plus.
exemple
avec
open ... ">","$file.html"
ca t'ecrit tout dans un fichier $file.html au lieu de remplace $file par le nom du fichier obtenu dans la boucle precedente ?avec
open ... ">","c:\mesdocuments\masortie.html")
ca n'ecrit rien dans c:\mesdocuments\masortie.html…exemple de code qui fonctionne (sur un linux), les 3 lignes de open sont valides, j'en ai mis 2 en commentaires pour exemple.
[^] # Re: tes chaines et tes variables
Posté par Henri . Évalué à -5.
Salut Framasky,
je pense que j'avais oublie de mensionner que certaines value sont egal a 0
j'ai retouche mon clean et il travaille bien a la seul difference que j'obtien a la fin de mon tableau un champ vide.
sortie tu remarque qu'il ya le dernier champ est vide a la fin en principe il ne devrait pas existe comment empeche mon code de me le renvoyer.
[^] # Re: tes chaines et tes variables
Posté par Framasky (site web personnel) . Évalué à 2.
Ton $i n'est pas une chaîne vide : il y a une espace. Donc :
Ou plus générique, pour éviter que ça print si y a un caractère d'espacement (espace, tabulation, etc) ou plusieurs :
Being a sysadmin is easy. As easy as riding a bicycle. Except the bicycle is on fire, you’re on fire and you’re in Hell.
# map est fait pour ca
Posté par lom (site web personnel) . Évalué à 3.
map permet d'appliquer une fonction à chaque élément d'une liste, il est donc dommage de boucler autour du résultat de map alors que tu peux continuer à l'utiliser. Tu peux en effet appliquer tout le code que tu veux à map.
Ensuite, l'opérateur de concaténation pour perl est le point si je me souviens bien.
Donc je pense que tu veux:
Maintenant si tu ne veux pas de lignes vides, il va falloir légèrement complexifier le map, mais tu peux t'en sortir en te basant sur quelque chose comme:
[^] # Re: map est fait pour ca
Posté par Henri . Évalué à -5.
Merci Lom, des explications
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.