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

Programmation et administration système Perl Discussion :

commande linux dans perl


Sujet :

Programmation et administration système Perl

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 161
    Points : 77
    Points
    77
    Par défaut commande linux dans perl
    Bonjour,

    ma question est simple .

    Comment représenter cette commande dans une variable perl.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    awk 'BEGIN {FS=";"} {print $1 FS $3 FS $4}' < fichier-orig.csv > fichier-dest.csv
    merci.

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu peux exécuter cette commande par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system( q/awk 'BEGIN {FS=";"} {print $1 FS $3 FS $4}' < fichier-orig.csv > fichier-dest.csv/ );
    D'un autre côté, tu peux faire la même chose en Perl, en one-liner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -F; -ane 'print +(join ";", @F[0,2,3])' fichier-orig.csv > fichier-dest.csv
    ou simplement dans un script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while(<>) {
      my @fields = split /;/;
      print +(join ";", @fields[0,2,3]);
    }
    --
    Jedaï

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 161
    Points : 77
    Points
    77
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system( q/awk 'BEGIN {FS=";"} {print $1 FS $3 FS $4}' < fichier-orig.csv > fichier-dest.csv/ );
    c'est cette solution qui m'interesse mais perl prend $1 $3 $4 comme variable ainsi le ";" comme fin de ligne.

    alors je sais pas comment faire

    merci

  4. #4
    Membre actif Avatar de CKLN00
    Homme Profil pro
    Bioinformaticien Java/Perl
    Inscrit en
    Avril 2008
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Bioinformaticien Java/Perl
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 210
    Points : 263
    Points
    263
    Par défaut
    c'est justement pour ça qu'il as répondu
    system( q/awk 'BEGIN {FS=";"} {print $1 FS $3 FS $4}' < fichier-orig.csv > fichier-dest.csv/ );
    tout ce qui est entre q/ et / n'est pas interpréter par perl
    CKL
    N°°b forever
    --
    may the be with you

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 161
    Points : 77
    Points
    77
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system( q/awk 'BEGIN {FS=";"} {print $1 FS $3 FS $4}' < fichier-orig.csv > fichier-dest.csv/ );
    merci, mais peut etre je suis pas allé au bout de ma question,

    j'aimerais bien savoir comment l'écrire cette fois avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system( q/awk 'BEGIN {FS=";"} {print $1 FS $3 FS $4}' < $file > $file/ );
    avec $file doit etre interprété .

    merci

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Un peu d'imagination que diable !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system( q/awk 'BEGIN {FS=";"} {print $1 FS $3 FS $4}'/ . " < $file > $file" );
    --
    Jedaï

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 161
    Points : 77
    Points
    77
    Par défaut
    merci

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    Bonjour,
    je suis novice en perl,

    j'aimerai pouvoir entrer comme ligne de commande, le nom de mon script ainsi que quelques options le concernant:

    par exemple, afficher un nom et un age, de la manière suivante:

    perl mon_script.pl --nom=zzz --age=15
    merci d'avance

  9. #9
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Les paramètres en PERL peuvent se récupérer directement via le tableau @ARGV.
    Mais si tu veux utiliser des paramètres du style --truc=machin regarde le module Getopt::Long.

    Un p'tit tutoriel est sur ce site : . Regarde toujours dans les sources, FAQ !!

    Sinon, à l'avenir, je te conseille de créer une discussion par toi même plutôt que de poser ta question à la suite d'une ancienne discussion.

  10. #10
    Membre actif
    Avatar de VforVincent
    Homme Profil pro
    Doctorant (EPUB 3.0)
    Inscrit en
    Avril 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Doctorant (EPUB 3.0)
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 115
    Points : 265
    Points
    265
    Par défaut Batch dans Perl, ou Perl dans Batch ?
    Bonjour, j'ai une petite question (sinon je créerais pas de sujet).

    Je vais essayer d'être précis, pour éviter les remous habituels. J'avais un projet à faire. Le résultat est là, tout est fini, mais maintenant j'aimerais "unifier" tout ce que je fais. Et pour ça je cherche un langage si possible que je connais, et obligatoirement gratuit (je préfère préciser).

    Dans ce projet, j'ai tout d'abord un peu de batch de-ci de-là (pour parcourir des répertoires et établir des listes de noms de fichiers en XML ; pour créer des dossier).
    J'ai ensuite 2-3 transformation XSLT, pour obtenir des fichiers XHTML, à partir des fichiers sources, dont je récupère les noms dans mes ch'tites listes. Je déplace d'autres fichiers (notamment des .jpg).

    Et je finis par du post-traitement en Perl (je nettoie un peu mes fichiers).

    J'aurai aimé avoir l'ensemble des traitements appelés soit dans un Batch (oui je sais, ce n'est pas le bon forum), soit en Perl (ah ! c'est le bon forum !).

    La question est donc simple : Pensez-vous que je puisse réunir tout ce beau monde dans un programme Perl ? J'ai vu quelques sujets approchant de la réponse :

    Ici, et .

    Merci de m'aider dans cette réflexion !!

    Note : pour l'instant, j'ai un batch qui appellent tout, mais je ne maîtrise pas ce langage, et j'aimerais faire beaucoup plus... et le beaucoup plus, je l'imagine très bien en Perl !

    "The power of the Web is in its universality.
    Access by everyone regardless of disability is an essential aspect."

    Tim Berners-Lee, W3C Director and inventor of the World Wide Web

  11. #11
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Tu peux bien évidemment regrouper le tout dans un programme perl qui fera les appels systèmes nécessaires.

  12. #12
    Membre actif
    Avatar de VforVincent
    Homme Profil pro
    Doctorant (EPUB 3.0)
    Inscrit en
    Avril 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Doctorant (EPUB 3.0)
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 115
    Points : 265
    Points
    265
    Par défaut
    Cette affirmation me suffit pour me lancer dedans ! Merci pour ton retour Djibril.

    Et pardon d'avoir apparemment créé un sujet dans ce sujet (en même temps il y avait un lien ; on dira que c'était une question subsidiaire).

    "The power of the Web is in its universality.
    Access by everyone regardless of disability is an essential aspect."

    Tim Berners-Lee, W3C Director and inventor of the World Wide Web

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser des commandes linux dans un shell
    Par Info_76 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 20/03/2008, 12h03
  2. lancer une commande linux dans un script perl
    Par hammag dans le forum Langage
    Réponses: 1
    Dernier message: 21/11/2007, 16h18
  3. [Système] Commande Linux dans Programme PHP
    Par makohsarah dans le forum Langage
    Réponses: 3
    Dernier message: 10/09/2007, 12h36
  4. Peut-on utiliser des commandes linux avec PERL
    Par undercrash dans le forum Linux
    Réponses: 2
    Dernier message: 01/03/2007, 14h12
  5. Réponses: 2
    Dernier message: 24/06/2003, 20h31

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