[PERL]- traduire du shell en perl
Fermé
tonixm
Messages postés
127
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
30 janvier 2009
-
9 avril 2008 à 13:39
tonixm Messages postés 127 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 - 22 avril 2008 à 15:29
tonixm Messages postés 127 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 - 22 avril 2008 à 15:29
A voir également:
- [PERL]- traduire du shell en perl
- Traduire une page - Guide
- Denon perl pro test - Accueil - Audio
- Classic shell windows 11 - Télécharger - Personnalisation
- Traduire photo - Guide
- Traduire un document word - Guide
90 réponses
tonixm
Messages postés
127
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
30 janvier 2009
4
12 avril 2008 à 22:30
12 avril 2008 à 22:30
tu compare la ligne de .analyse en question (puis tu fait pareil pour tte les autres: simple boucle) avec TOUTES celles de .conf et tu test.
bref je crois que je ne vais pas réussir a t expliquer mon probleme :(
bref je crois que je ne vais pas réussir a t expliquer mon probleme :(
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
12 avril 2008 à 22:36
12 avril 2008 à 22:36
tu compare la ligne de .analyse en question (puis tu fait pareil pour tte les autres: simple boucle) avec TOUTES celles de .conf et tu test.
c'est exactement ce que fait le script que je t'ai donnée
c'est exactement ce que fait le script que je t'ai donnée
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
12 avril 2008 à 22:41
12 avril 2008 à 22:41
je t'ai envoyé un mail
tonixm
Messages postés
127
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
30 janvier 2009
4
12 avril 2008 à 22:43
12 avril 2008 à 22:43
je vais regarder sa
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tonixm
Messages postés
127
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
30 janvier 2009
4
12 avril 2008 à 23:03
12 avril 2008 à 23:03
viens sur msn
tonixm
Messages postés
127
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
30 janvier 2009
4
13 avril 2008 à 09:23
13 avril 2008 à 09:23
merci sa a l air de très bien fonctionner d'après ce que tu m'a envoyer!!!
merci beaucoup!
je vais tester tout sa demain
merci beaucoup!
je vais tester tout sa demain
tonixm
Messages postés
127
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
30 janvier 2009
4
14 avril 2008 à 09:18
14 avril 2008 à 09:18
salut,
cette ligne me bloque le script a l execution:
$e=~/${x}.*$y/;
est tu sur de la syntaxe?
le code:
cette ligne me bloque le script a l execution:
$e=~/${x}.*$y/;
est tu sur de la syntaxe?
le code:
open CONF,"$conf_file" or die "E/S : $!\n"; open ANALYSE,"$file_analyse" or die "E/S : $!\n"; open TMP,">$file_tmp" or die "E/S : $!\n"; my @conf=<CONF>; chomp @conf; while(my $e=<ANALYSE>){ print TMP $e unless grep { if($_=~/\|/){ my ($x,$y)=split /\|/,$_; $y=~ s/^\s*(.*)/$1/; $e=~ /${x}.*$y/; }else{ $e=~/$_/; } } @conf; } close(CONF); close(ANALYSE); close(TMP);
tonixm
Messages postés
127
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
30 janvier 2009
4
14 avril 2008 à 09:57
14 avril 2008 à 09:57
c'est bon j'ai enlever cette ligne: $y=~ s/^\s*(.*)/$1/; et ca marche!
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
14 avril 2008 à 10:09
14 avril 2008 à 10:09
Salut,
en fait cette ligne je l'ai mis puisque tu avais d'espaces après |
donc c'était juste une sécurité en plus
chez ça marche -> je te l'ai dit qu'on ne teste pas les même fichiers, mais tu ne veux pas me croire
quand je teste tes soit disant fichier je dois faire un copier/coller
en ce cas c'est possible de copier aussi des caractères non imprimables qui n'existent pas
mais bon, tant mieux que ça marche
j'espère que t'es content ;-)
en fait cette ligne je l'ai mis puisque tu avais d'espaces après |
donc c'était juste une sécurité en plus
chez ça marche -> je te l'ai dit qu'on ne teste pas les même fichiers, mais tu ne veux pas me croire
quand je teste tes soit disant fichier je dois faire un copier/coller
en ce cas c'est possible de copier aussi des caractères non imprimables qui n'existent pas
mais bon, tant mieux que ça marche
j'espère que t'es content ;-)
tonixm
Messages postés
127
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
30 janvier 2009
4
14 avril 2008 à 10:17
14 avril 2008 à 10:17
je vais faire des tests complémentaires mais pour l'instant sa marche!
En tous cas merci pour tout lami20j!!
En tous cas merci pour tout lami20j!!
tonixm
Messages postés
127
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
30 janvier 2009
4
21 avril 2008 à 09:15
21 avril 2008 à 09:15
petite question:
my ($x,$y)=split /\|/,$_;
a quoi correspond le $_?
my ($x,$y)=split /\|/,$_;
a quoi correspond le $_?
blux
Messages postés
26498
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
28 novembre 2024
3 317
21 avril 2008 à 09:33
21 avril 2008 à 09:33
Salut,
C'est la variable fourre-tout de Perl...
Si tu fais print pour afficher quelque chose sans mettre de variable, Perl affichera le contenu de $_
La plupart des opérations en Perl utilisent cette variable en usage interne, mais elle est aussi accessible en externe (pour l'utilisateur). Il ne faut cependant pas trop compter dessus, car elle est susceptible d'être modifiée à tout moment...
C'est la variable fourre-tout de Perl...
Si tu fais print pour afficher quelque chose sans mettre de variable, Perl affichera le contenu de $_
La plupart des opérations en Perl utilisent cette variable en usage interne, mais elle est aussi accessible en externe (pour l'utilisateur). Il ne faut cependant pas trop compter dessus, car elle est susceptible d'être modifiée à tout moment...
tonixm
Messages postés
127
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
30 janvier 2009
4
21 avril 2008 à 09:35
21 avril 2008 à 09:35
mais ici que vaut elle?
my @conf=<CONF>; chomp @conf; while(my $e=<ANALYSE>){ print TMP $e unless grep { if($_=~/\|/){ my ($x,$y)=split /\|/,$_; $y=~ s/^\s*(.*)/$1/; $e=~ /${x}.*$y/; }else{ $e=~/$_/; } } @conf; }
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 2008 à 11:37
21 avril 2008 à 11:37
Salut,
cette partie
j'aurais pu l'écrire (mais pour des raions de visibilité j'ai préféré le 1ère version ;-)
et si tu consulte la doc de la fonction grep http://perl.mines-albi.fr/DocFr/perlfunc.html#item_grep tu comprendras mieux
Dans ce cas $_ , représente les éléments de @conf
Il ne faut cependant pas trop compter dessus, car elle est susceptible d'être modifiée à tout moment
On peut toujours compter sur $_ , mais il faut être rigureaux en écrivant le code
C'est la raison pour laquelle dans la boucle while(my $e=<ANALYSE>){ j'utilise $e
A savoir que $_ est utilisé aussi pour des raisons de paresse ;-))
cette partie
print TMP $e unless grep { if($_=~/\|/){ my ($x,$y)=split /\|/,$_; $y=~ s/^\s*(.*)/$1/; $e=~ /${x}.*$y/; }else{ $e=~/$_/; } } @conf;
j'aurais pu l'écrire (mais pour des raions de visibilité j'ai préféré le 1ère version ;-)
print TMP $e unless grep {if($_=~/\|/){my ($x,$y)=split /\|/,$_;$y=~ s/^\s*(.*)/$1/;$e=~ /${x}.*$y/;}else{$e=~/$_/;}} @conf;
et si tu consulte la doc de la fonction grep http://perl.mines-albi.fr/DocFr/perlfunc.html#item_grep tu comprendras mieux
Dans ce cas $_ , représente les éléments de @conf
Il ne faut cependant pas trop compter dessus, car elle est susceptible d'être modifiée à tout moment
On peut toujours compter sur $_ , mais il faut être rigureaux en écrivant le code
C'est la raison pour laquelle dans la boucle while(my $e=<ANALYSE>){ j'utilise $e
A savoir que $_ est utilisé aussi pour des raisons de paresse ;-))
tonixm
Messages postés
127
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
30 janvier 2009
4
21 avril 2008 à 13:44
21 avril 2008 à 13:44
merci pour cette bellle analyse!!
tonixm
Messages postés
127
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
30 janvier 2009
4
21 avril 2008 à 13:58
21 avril 2008 à 13:58
est il possible dans ce sccript de rajouter dans un fichier .debug la ligne qui a permis d'enlever la ligne de .analyse. Par là je veux dire par exemple que si on a :
.conf
ntpd: listening
ntpd: complete installation
.analyse
ntpd: listening on interface
allo: bonjour
lami20j: mr perl
.tmp
allo: bonjour
lami20j: mr perl
et de mettre par exemple dans un .debug ici:
ntpd: listening on interface retirée par ntpd: listening du fichier .conf
qui aurait un epetite idée. moi jaa i essayer:
.conf
ntpd: listening
ntpd: complete installation
.analyse
ntpd: listening on interface
allo: bonjour
lami20j: mr perl
.tmp
allo: bonjour
lami20j: mr perl
et de mettre par exemple dans un .debug ici:
ntpd: listening on interface retirée par ntpd: listening du fichier .conf
qui aurait un epetite idée. moi jaa i essayer:
my $d; open CONF,"$confFile" or die "E/S : $!\n"; open ANALYSE,"$fileAnalyse" or die "E/S : $!\n"; open TMP,">$fileTmp" or die "E/S : $!\n"; open DEBUG,">>$fileDebug" or die "E/S : $!\n"; while (my $c=<CONF>){ while(my $e=<ANALYSE>){ if($c=~/\|/){ my ($x,$y)=split /\|/,$c; if($e=~ /$x.*$y/){ print TMP $e; }else{ $d="$e enlevé par $c"; print DEBUG $d; } } elsif($e=~/$c/){ print TMP $e; } else{ $d="$e enlevé par $c"; print DEBUG $d; } } }
tonixm
Messages postés
127
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
30 janvier 2009
4
21 avril 2008 à 13:58
21 avril 2008 à 13:58
mais le fichier .debug ne se rempli pas
tonixm
Messages postés
127
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
30 janvier 2009
4
21 avril 2008 à 15:12
21 avril 2008 à 15:12
une idée??
tonixm
Messages postés
127
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
30 janvier 2009
4
21 avril 2008 à 17:29
21 avril 2008 à 17:29
autre idée a la manière de lami20j:
mais cela ne marche pas tout le temps!!
open CONF,"$confFile" or die "E/S : $!\n"; open ANALYSE,"$fileAnalyse" or die "E/S : $!\n"; open TMP,">$fileTmp" or die "E/S : $!\n"; open DEBUG,">>$fileDebug" or die "E/S : $!\n"; my @conf=<CONF>; chomp @conf; while(my $e=<ANALYSE>){ print TMP $e unless grep { if($_=~/\|/){ my ($x,$y)=split /\|/,$_; $e=~ /$x.*$y/; if($e=~ /$x.*$y/){ print DEBUG "$e:$_\n"; } }else{ $e=~/$_/; if($e=~/$_/){ print DEBUG "$e:$_\n"; } } } @conf; }
mais cela ne marche pas tout le temps!!
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 2008 à 18:18
21 avril 2008 à 18:18
#!/usr/bin/perl use strict;use warnings; open CONF,"fichier.conf" or die "E/S : $!\n"; open ANALYSE,"fichier.analyse" or die "E/S : $!\n"; open TMP,">fichier.tmp" or die "E/S : $!\n"; open DEBUG,">debug.log" or die "E/S : $!\n"; my @conf=<CONF>; chomp @conf; while(my $e=<ANALYSE>){ if( grep { if($_=~/\|/){ my ($x,$y)=split /\|/,$_; $y=~s/^\s*(.*)/$1/; $e=~/${x}.*$y/; }else{ $e=~/$_/; } } @conf){ print DEBUG $e; }else{ print TMP $e; } } __END__
tonixm
Messages postés
127
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
30 janvier 2009
4
21 avril 2008 à 18:25
21 avril 2008 à 18:25
merci lami20j!!!
par curiosité: as tu tester cette solution??
par curiosité: as tu tester cette solution??