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 :

Suppression de caractères par substitution


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Suppression de caractères par substitution
    Salut tout le monde,

    J'ai un script Perl que j'ai fait un peu à la "va-vite" et qui jusque maintenant fait bien son boulot mais j'ai à présent besoin de faire une update pour prendre en compte certaines tâches.

    Le but du script est d'être lancé dans un répertoire et de rechercher tous les fichiers XSLT contenu dans celui-ci, de les lires ligne par ligne et d'éventuellement y apporter quelques modifs, notamment la suivante :

    Ces fichiers XSLT sont créés avec un outils graphique et cet outils insert un include (ou plusieurs) dans le code. Le problème, est que ces includes contiennent le chemin absolu vers la librairie. Mon script doit donc le remplacer par un chemin relatif.

    Par exemple ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:include href="F:\IST\Office\Release 01.0 FXD \020 - Integration\Team\Libs\xsltsl-1.2.1\math.xsl"/>
    Doit devenir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:include href="JMIL\math.xsl"/>
    Jusqu'ici, je recherchais simplement les includes et remplacait entièrement la ligne, ce qui me donnait une structure if pour chaque librairie possible. Mais on n'en avait pas beaucoup.

    Maintenant, ce n'est plus le cas et je voudrais donc trouver une façon propre et surtout correcte de faire ça. Il me semble que les regex seraient la meilleure façon de faire mais mes connaissances sont beaucoup trop limitées actuellement et je n'arrive pas à trouver un exemple qui soit assez proche de ce que je veux faire.

    Un autre exemple, je pourrais avoir cette adresse-ci :[CODE]<xsl:include href="C:\UserTemp\Checkout\integration_layer\branches\dev\JMIL\xslt\TOFOML\MXML\JMIL\dates\functions\difference\date.difference.template.xsl"/>CODE]

    A remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:include href="JMIL\dates\functions\difference\date.difference.template.xsl"/>
    Voilà, désolé pour cette longue tartine. Merci pour votre temps à ceux qui seront allés jusqu'au bout et un tout tout grand merci à ceux qui pourront m'aider.

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Il y a donc deux possibilité
    1) l'adresse contient JMIL
    2) elle ne le contient pas

    Voici une idée de code à adapter si besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 1) my $adresse = '<xsl:include href="C:\UserTemp\Checkout\integration_layer\branches\dev\JMIL\xslt\TOFOML\MXML\JMIL\dates\functions\difference\date.difference.template.xsl"/>';
    if($adresse =~ '(<xsl:include href=").*(JMIL.*>)'){
    	$adresse = $1.$2;
    	# <xsl:include href="JMIL\dates\functions\difference\date.difference.template.xsl"/>       
    }
    # 2) my $adresse= '<xsl:include href="F:\IST\Office\Release 01.0 FXD \020 - Integration\Team\Libs\xsltsl-1.2.1\math.xsl"/>';
    elsif($adresse =~ '(<xsl:include href=").*(\\\.*"/>)'){	
    	$adresse = $1.'JMIL'.$2;
    	# <xsl:include href="JMIL\math.xsl"/>
    }
    -- Jasmine --

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup, ça fonctionne

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

Discussions similaires

  1. Suppression des caractères par des blancs
    Par MEGAMIND2 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/01/2011, 09h03
  2. nombre de caractères par ligne à l'affichage
    Par trotters213 dans le forum Oracle
    Réponses: 3
    Dernier message: 03/11/2005, 09h51
  3. Remplacer un caractère par une image
    Par mr.t dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 27/10/2005, 09h18
  4. Fonction qui transforme chaine de caractère par une autre?
    Par geoffreykill dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 09/12/2004, 14h31
  5. [sybase] Suppression de tables par lot
    Par Higgins dans le forum Sybase
    Réponses: 2
    Dernier message: 30/09/2004, 16h42

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