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 :

Problème de parse des arguments contenant des espaces et des slashs


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Problème de parse des arguments contenant des espaces et des slashs
    Bonjour,

    J'ai un script perl qui doit prendre 2 parametres :
    1/ un nom de fichier : mot
    2/ un chemin windows : chaine de caractères pouvant contenir des espaces et des slashs ("C:\Documents and Settings\frs\Mes documents").

    J'ai essayé plusieurs solutions (getoptions/@ARGV[0] et @ARGV[1]/parcours de tous les parametres) mais je n'arrive jamais à recuperer correctement mes 2 parametres (enfin surtout le 2eme!).

    j'ai l'impression que l'interpreteur a du mal avec la combinaison espace + backslash...

    j'ai essayé avec une ligne de commande de type :
    mon_script.pl toto.c C:\Documents and Settings\frs\titi.ada
    mon_script.pl -name toto.c -path C:\Documents and Settings\frs\titi.ada
    mon_script.pl -name toto.c -path "C:\Documents and Settings\frs\titi.ada"
    mon_script.pl toto.c "C:\Documents and Settings\frs\titi.ada"

    Si vous avez deja eu ce besoin, comment vous en etes vous sortis ? :-)
    Merci d'avance,
    Franck

  2. #2
    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 : 499 184
    Points
    499 184
    Par défaut
    La manière la plus propre pour manipuler les arguments est d'utiliser le module Getopt::Long. J'en parle dans les sources de perl avec quelques exemples en se basant sur ta problématique.

  3. #3
    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
    Le problème des espaces dans les chemins, c'est qu'ils séparent le path en plusieurs paramètres d'appel.
    As-tu essayé d'appeler ton programme ainsi:
    mon_script.pl toto.c C:\Documents\ and\ Settings\frs\titi.ada
    mon_script.pl -name toto.c -path C:\Documents\ and\ Settings\frs\titi.ada
    mon_script.pl -name toto.c -path "C:\Documents\ and\ Settings\frs\titi.ada"
    mon_script.pl toto.c "C:\Documents\ and\ Settings\frs\titi.ada"

    Depuis qu'il type de console tapes-tu ces commandes ?

    Cela dit, à priori, l'usage de " " (double quote) autour des chemins devrait fonctionner à la fois sous Cygwin/bash et sous l'invité de commande XP (activeperl).
    Code cygwin/bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ perl -e 'print map "[$_]\n", @ARGV' c:\toto.txt "c:\Document and Settings\moi\toto.txt"
    [c:toto.txt]
    [c:\Document and Settings\moi\toto.txt]
    Code invité XP/activeperl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    C:\Perl>bin\perl.exe -e "print map qq([$_]\n), @ARGV;" c:\toto.txt "c:\Document and Settings\moi\toto.txt"
    [c:\toto.txt]
    [c:\Document and Settings\moi\toto.txt]
    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

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/01/2009, 10h38
  2. Réponses: 2
    Dernier message: 06/08/2008, 09h31
  3. Réponses: 3
    Dernier message: 29/01/2008, 14h28
  4. Renommer des fichiers contenant des espaces
    Par MatRem dans le forum Linux
    Réponses: 6
    Dernier message: 28/04/2006, 08h21
  5. Réponses: 3
    Dernier message: 10/12/2005, 19h56

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