OVH Cloud OVH Cloud

[newbie]insertion en fin de ligne

13 réponses
Avatar
Philippe Rousselot
bonjour,

je veux ajouter du texte en début et fin de ligne

#!/usr/bin/perl -w
use strict;
my $file = $ARGV[0];
my $table = $ARGV[1];
my $var1='INSERT INTO '.$table.' values (';
my $var2=') ;';
open(FILE,$file);
while(<FILE>) {

$_ =~ s/^/$var1/ig ;
$_ =~ s/$/$var2/ig ;
print "$_";
}
close(FILE);

pour le début, pas de probleme. Par contre $var2 s'ajoute en début et non
fin de ligne.

merci de votre aide éclairée

Amazilia

3 réponses

1 2
Avatar
Philippe Rousselot
Rue des Prairies wrote:

Rue des Prairies wrote:


while(<FILE>) {
chomp;
$_ = $var1 . $_ . $var2;
}



pareil ...

Philippe


Montre-nous un extrait de ton fichier.


récupéré par ailleur :

Ha bah sa, sa troue!
J'ai fait un copier-coller de ton script et de ton fichier d'entré
tout marche chez moi. La sortie donne:

INSERT INTO FICHE values (121673,'974',,4,'','','','','','','',,,0) ;
INSERT INTO FICHE values (121674,'91',,32,'','','','','','','',,,0) ;
INSERT INTO FICHE values (121675,'93',,32,'','','','','','','',,,0) ;

Quelle est ta version de Perl? Moi je suis en 5.8.5...
J'ai eu des problemes un peu similaires je crois avec un 5.8 plus
ancienne (un comportement bizarre avec un format mais qui donnait
des symptomes proches) et j'ai finit avec un sale workaround...

Francois.

...


bon maintenant c'est vraiment pour le sport, j'ai fait un truc en php et ça
marche.

merci vraiment à tous

Philippe



Avatar
Mathieu Arnold
Philippe Rousselot écrivait:
Rue des Prairies wrote:



Rue des Prairies wrote:



while(<FILE>) {
chomp;
$_ = $var1 . $_ . $var2;
}



pareil ...

Philippe


Montre-nous un extrait de ton fichier.



rpm -qa |grep perl donne perl-5.8.5-3.1.101mdk

ofichier original

121673,'974',,4,'','','','','','','',,,0
121674,'91',,32,'','','','','','','',,,0
121675,'93',,32,'','','','','','','',,,0


script

#!/usr/bin/perl -w
use strict;
my $file = $ARGV[0];
my $table = $ARGV[1];
my $var1='INSERT INTO '.$table.' values (';
my $var2=') ;';
open(FILE,$file);
while(<FILE>) {
chomp ;
$_ = $var1.$_.$var2 ;
print "$_n";
}
close(FILE);

fichier dest

) ;ERT INTO FICHE values (121673,'974',,4,'','','','','','','',,,0
) ;ERT INTO FICHE values (121674,'91',,32,'','','','','','','',,,0
) ;ERT INTO FICHE values (121675,'93',,32,'','','','','','','',,,0


Ton fichier a ses fin de lignes "rn" et chomp ne suffira pas a virer
les deux, essaye d'appeler deux fois chomp, sinon, s/rn//o;

--
Mathieu Arnold




Avatar
Philippe Rousselot
Mathieu Arnold wrote:




Ton fichier a ses fin de lignes "rn" et chomp ne suffira pas a virer
les deux, essaye d'appeler deux fois chomp, sinon, s/rn//o;




merci!

s/rn//o marche très bien

Philippe

1 2