IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Unilignes perl pour nos sources [Sources]


Sujet :

Langage Perl

  1. #61
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 700
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 700
    Points : 15 043
    Points
    15 043
    Par défaut
    Salut,

    ma contribution typo-orthographique :
    Citation Envoyé par djibril Voir le message
    Merci pour ta participation, je la rajouterai dans la FAQ. Juste une précision, une phrase se termine certes par un point, mais peut aussi se terminer par un point d'exclamation ou un point d'interrogation. (...)
    Une phrase peut également se terminer par 3 points de suspension !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #62
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Je dirais même qu'une phrase peut se terminer par plusieurs caractères qui se suivent :

    Sans commentaire...
    Mais que se passe-t-il ?!
    Wouhou !!!!!!!!!!!!

    Du coup, ça donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    perl -e "$_ =shift; $wc = split /\s/; $pc = split /[\.\?\!]+/; print qq/ $wc mots\n $pc phrases\n/;" "ma phrase à compter. Ma deuxième phrase... Une autre ? Ok :-) !!!!  Merci."
     15 mots
     5 phrases
    Pour ce qui est d'ajouter les points de suspensions "…" (Alt+0133 sous Windows), ça dépend un peu trop de l'environnement, et si on part là dedans, il faut aussi ajouter les caractères inversés par exemple (¿ et ¡)

  3. #63
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Question: Comment modifier les formats de date dans un fichier?

    Chapitre : unilignes
    Testé sous : Linux, HP-UX, VMS, Windows (MS-DOS)

    Cette commande remplace les tirets par des slash dans le fichier (sans création d'un fichier temporaire intermédiaire) et fait donc passer les dates du format 13-09-2010 au format 13/09/2010 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi -e 's/-/\//g;' fichier.txt
    Cette commande fait passer toutes les dates de tous les fichiers *.CSV en entrée du format 13/09/2010 au format 2010-09-13 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi -e 's/;(\d\d)\/(\d\d)\/(\d{4})/;$3-$2-$1/g' *.csv
    Remarque: sous DOS, le *.csv n'est pas interprété correctement, il faut sans doute traiter chaque fichier individuellement, ou utiliser la syntaxe proposée par Alek-C:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOR %A IN (*.CSV) DO perl -pi.bak -e "s/;(\d\d)\/(\d\d)\/(\d{4})/;$3-$2-$1/g" %A
    Cette commande fait passer toutes les dates de tous les fichiers *.txt en entrée du format “2000-10-16 17:12:23” au format “16/10/2000”:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi -e 's/;(\d{4})-(\d\d)-(\d\d) \d\d:\d\d:\d\d/;$3\/$2\/$1/g' *.txt
    Même remarque que précédemment sous DOS.

  4. #64
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Question: Comment mettre en minuscules (majuscules) tous les fichiers d'un répertoire?

    Chapitre : unilignes

    Testé sous: HP-UX, Linux.

    Commande Perl qui met en minuscules tous les noms de fichiers du répertoire courant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -e 'for (@ARGV) { rename $_, lc($_) unless -e lc($_); }' *
    Et pour mettre en majuscules les noms de fichiers commençant par “ad_” dans le répertoire courant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -e 'for (@ARGV) { rename $_, uc($_) unless -e uc($_); }' ad_*

  5. #65
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Question: Comment affichier la ligne n° 2 501 743 d'un fichier?
    Chapitre :
    unilignes

    Testé sous: HP-UX, Linux, VMS, MS-DOS.

    J'avais un programme perl traitant un très gros fichier. A un moment donné, j'ai le message d'erreur suivant: utilisation de valeur non initialisée à la ligne 2501743 du fichier. Comment retrouver cette ligne pour comprendre la source de l'erreur?

    Commande Perl qui affiche la ligne N° 2 501 743 d'un fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -n -e '{$i++; print $_ if $i == 2501743;}' nom_fichier.txt
    Autre version plus compacte et sans doute un peu plus rapide:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'print $_ if $. == 2501743;' nom_fichier.txt
    Version encore plus compacte utilisant la variable par défaut $_ de print:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'print if $. == 2501743' nom_fichier.txt
    Autre version plus compacte pour imprimer les lignes N° 20 à 60 d'un fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'print if 20 .. 60' nom_fichier.txt
    Même syntaxe pour n'imprimer qu'une seule ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'print if 30..30' nom_fichier.txt
    Si le fichier est beaucoup plus gros que 2501743 lignes, la commande Perl suivante sera beaucoup plus rapide que les précédentes parce qu'elle abandonnera la recherche dès que la ligne est affichée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'print and exit if $. == 2501743;}' nom_fichier.txt

    Commande qui affiche le numéro de ligne au début de chaque ligne d'un fichier, séparé du reste de la ligne par un espace:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -n -e 'print qq/$. $_/'  file_in

  6. #66
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Lolo78
    bon, pour certains cas, je pense que je préfèrerais sed ^^ mais il y a de très bonne idées, et surtout, ça ouvre d'autres possibilités !
    Peut-être une petite remarque pour les débutants par rapport à la partie "conversions de dates" (notamment le premier exemple) puisque tous les tirets seront convertis, qu'ils soient ou non utilisé dans une date !
    De même, dans l'exemple suivant, il faut que la date soit précédée d'un ";"

    Pour la gestion de plusieurs caractères sous dos, le plus simple que j'ai trouvé est d'utiliser FOR:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOR %A IN (*.CSV) DO perl -pi.bak -e "s/;(\d\d)\/(\d\d)\/(\d{4})/;$3-$2-$1/g" %A

  7. #67
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Q/R : Compter des occurences dans un fichier
    Chapitres : uniligne
    Testé sous : Linux, Windows

    La commande suivante permet de compter pour chaque ligne le nombre d’occurrences d'un motif donné... y'a ptet plus simple (avec ou sans Perl), mais je n'ai trouvé que ça rapidement ^^
    Dans mon cas, je voulais vérifier le nombre de pipe pour chaque ligne d'un fichier (en utilisant un petit | uniq après la commande suivante) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    > perl -ne "printf qq|%d\n|,$m=()=$_=~m/\|/g;" <fichier>
    printf réalise un print formaté
    qq|...| permet d'éviter l'utilisation des " parfois problématiques sous Windows ou dans les alias. Cette commande est équivalente à "..."
    %d\n indique à printf d'afficher le premier argument au format décimal suivi d'un saut à la ligne
    $m=()=m/\|/g; le secret, c'est l'assignation de l'expression m/\|/g à une liste anonyme () qui renvoie donc la liste des occurrences pour chaque ligne; puis, l'évaluation de cette liste dans un context scalaire avec $m=... qui provoque l'évaluation du nombre d'éléments de la liste
    voir ici pour plus de détails et d'autre opérateurs sympas

    ps.: \| est ici la chaine cherchée, on peut évidemment la remplacer...

  8. #68
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Alek-C Voir le message
    Lolo78
    bon, pour certains cas, je pense que je préfèrerais sed ^^ mais il y a de très bonne idées, et surtout, ça ouvre d'autres possibilités !
    Peut-être une petite remarque pour les débutants par rapport à la partie "conversions de dates" (notamment le premier exemple) puisque tous les tirets seront convertis, qu'ils soient ou non utilisé dans une date !
    De même, dans l'exemple suivant, il faut que la date soit précédée d'un ";"
    Clairement, les unilignes que je propose sont adaptés aux données sur lesquelles je les utilise. En l'occurrence, il n'y a que dans les dates qu'il y avait des tirets, le reste était constitué uniquement de données alphanumériques (numéro de client, numéro de dossier, type d'offre, etc.) séparées par des points-virgules. J'ai clairement dit que ça remplaçait les tirets par des slash, par uniquement dans les dates. Ce genre d'uniligne doit généralement être adapté au problème exact à résoudre.

    Merci pour ton astucieuse suggestion sur la gestion des fichiers DOS multiples, j'ai ajouté ta proposition dans mon post.

  9. #69
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 818
    Points : 499 183
    Points
    499 183
    Par défaut
    Bonjour,

    Je vais rajouter vos 4 unilignes Perl suivants*:
    1. Comment modifier les formats de date dans un fichier?
    2. Comment mettre en minuscules (majuscules) tous les fichiers d'un répertoire?
    3. Comment affichier la ligne n° 2 501 743 d'un fichier?
    4. Compter des occurences dans un fichier.


    Juste une petite remarque Lolo78. Lorsque tu dis que tes codes sont compatibles Windows (MS-DOS), attention car c'est faux pour la simple raison que ça ne fonctionne pas à cause des simples quotes (perl -e '' au lieu de perl -e "...").

  10. #70
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 818
    Points : 499 183
    Points
    499 183
    Par défaut
    Vos quatre unilignes ont été rajoutés dans la FAQ Perl.

  11. #71
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Super. Du coup j'en ajoutrerai d'autres.


  12. #72
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Question: Comment imprimer le quatrième mot de chaque ligne (émulation de la commande cut d'Unix)
    Chapitre : unilignes

    Testé sous: HP-UX, Linux (mais doit aussi marcher sous Windows et VMS en remplaçant les apostrophes par des guillemets)

    Imprime le quatrième mot de chaque ligne, sauf si la ligne commence par un #, le séparateur entre les mots étant le ”;” :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -naF";" -e 'next if /^#/; print qq/$F[3]\n/' fichier.txt
    Imprime le cinquième et le deuxième mot de chaque ligne, séparés par un espace, sauf si la ligne commence par un # ou par un nombre quelconque d'espaces suivis d'un # (le séparateur étant toujours le ";"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -naF";" -e 'print qq/$F[4] $F[1]\n/ unless /^ *#/' fichier.txt
    Commande qui enlève le dernier champ d'un fichier, à condition qu'il n'y ait pas de ”;” à la fin de ce dernier champ (en fait, on veut supprimer tout ce qui suit le dernier ";")

    Le fichier exemple en entrée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    114280099;0.0.0.1 /account 2034354645;1;0;
    114280193;0.0.0.1 /account 2034360011;1;0;[[54
    114280220;0.0.0.1 /account 2034362388;1;0;
    117805929;0.0.0.1 /account 8451327160;1;0;[[51
    ...
    On veut supprimer le dernier champ (par exemple ”[[54”) quand il existe, en utilisant cette fois une expression régulière “gourmande” qui garde tout ce qui précède le dernier ”;”, celui-ci compris.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne '/(.*;)/; print qq/$1\n/' compte.txt > output.txt

  13. #73
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Question: Comment supprimer les lignes vides d'un fichier
    Chapitre : unilignes

    Testé sous: HP-UX et Linux (ainsi que VMS et Windows en remplaçant les apostrophes par des guillemets)

    Pour retirer d'un fichier toutes les lignes vides ou ne comprenant que des espaces blancs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'print unless /^\s*$/;' mon_fichier.txt > fichier_resultat.txt

  14. #74
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Question: Comment supprimer les doublons d'un fichier trié
    Chapitre : unilignes

    Testé sous: HP-UX, Linux (ainsi que VMS en remplaçant les apostrophes par des guillemets)

    J'ai un programme qui compare les données clients entre deux applications différentes. L'une des séries de fichiers de sortie contient la liste des numéros de clients pour lesquels il y a des différences. La nature du traitement de comparaison garantit que les numéros de clients sont triés dans l'ordre ascendant, mais si plusieurs différences ont été trouvées, alors le numéro de client se trouve plusieurs fois à la suite. Je désire créer un fichier sans doublons.

    Commande perl qui lit le fichier (préalablement trié) file_in.txt et stocke le résultat dédoublonné dans file_out.txt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'print $_ if $a ne $_; $a=$_;' file_in.txt > file_out.txt
    L'option -i de la ligne de commande Perl permet de modifier directement le fichier en entrée (modification “sur place”, sans création d'un second fichier).

    Commande Perl qui dédoublonne tous les fichiers DELTA_*.TXT d'un répertoire (cette version avec variable d'environnement Unix ne marchera que sous Unix ou Linux, une retouche est nécessaire sous VMS):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ni -e 'print if $a ne $_; $a=$_;'  $RESULT_PATH/DELTA_*.TXT
    Au fait, à propos d'ordre de tri: commande perl qui lit le fichier file_in.txt et vérifie que chaque ligne est classée dans un ordre croissant et affiche à l'écran les lignes dans le désordre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'chomp; print "$_ $a\n" if $a gt $_; $a=$_;' file_in.txt
    (On peut aussi faire un sort sur le fichier, mais ça peut être plus long avec un gros fichier. Cette commande peut aussi servir de test pour vérifier qu'un fichier est conforme aux specifications.)

    Si le fichier est très gros, on peut se contenter d'arrêter la recherche dès la première anomalie rencontrée et afficher les deux lignes fautives ainsi que le numéro de ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'print "$. $_ $a\n" and exit if $a gt $_; $a=$_;' file_in.txt

  15. #75
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 818
    Points : 499 183
    Points
    499 183
    Par défaut
    Bonjour,

    Les trois questions ont été rajoutées dans la FAQ Perl.

  16. #76
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Question: Comment lancer plusieurs fois un programme (perl ou autre) avec des paramètres differents
    Chapitre : unilignes

    Testé sous: VMS et HP-UX, mais devrait marcher de la même façon sous Linux et Windows. (Il faut utiliser des apostrophes pour Linux et Unix, et des guillemets pour VMS et Windows.)

    Le programme CHCOEXO345.PL prend en paramètre le nom de la database sur laquelle il doit s'exécuter. On veut le lancer en automatique sur 8 databases.

    On le lance normalement avec, par exemple, la commande suivante (sous VMS):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl CHCOEXO345_MATRICE.PL  DB07
    La commande Perl suivante permet de lancer en une seule fois ce programme pour l'ensemble des databases:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -e "`perl  CHCOEXO345.PL $_` foreach qw /DB01 DB02 DB03 DB04 DB05 DB06 DB07 DB08/"

  17. #77
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Petite amélioration : remplacer
    `perl ...
    par
    `$0 ...

    Ceci permet de ne pas se soucier de l'exécutable perl utilisé (dans le cas d'une installation de plusieurs perl). Dans ce cas de figure, le même perl est utilisé pour l'uniligne que pour celui lancé par ``).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  18. #78
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Question: Comment déterminer quels sont les modules Perl installés
    Chapitre : unilignes

    Testé sous: Unix et Linux



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -M5.10.1 -e 'sub search {for $d (glob "$_[0]/*") { -d $d ? search ($d) : say $d;}} search ($_) for (@INC)'
    Première fois que je fais un script uniligne avec une procédure appelée récursivement.

  19. #79
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 818
    Points : 499 183
    Points
    499 183
    Par défaut
    Faut bien un début à tout

    Pour rendre ton programme portable partout, notamment Windows, j'ai utilisé qq.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -M5.10.1 -e "sub search {for $d (glob qq|$_[0]/*|) { -d $d ? search ($d) : say $d;}} search ($_) for (@INC)"
    Par contre, ça m'affiche un peu tout et n'importe quoi !
    Tout mon répertoire de perl mais aussi mon répertoire Appdata, Documents...

  20. #80
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Pas ce genre de problème sous Unix ou Linux ou Cygwin.

    Sous Windows pur, je n'ai aucune idée de la façon dont l'environnement est défini.

    On doit pourvoir filtrer
    perl -M5.10.1 -e "sub search {for $d (glob qq|$_[0]/*|) { -d $d ? search ($d) : say $d if $d =~ /\.p?/;}} search ($_) for (@INC)"

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/06/2011, 10h08
  2. Réponses: 3
    Dernier message: 16/09/2003, 14h04
  3. Réponses: 3
    Dernier message: 02/09/2002, 19h49
  4. [réseaux] Bench en Perl pour avoir le débit entre 2 pc
    Par Frich dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 22/05/2002, 18h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo