Outils pour utilisateurs

Outils du site


public:executer_des_scripts_perl_depuis_txm

Ceci est une ancienne révision du document !


Exécuter des scripts Perl depuis TXM

Création du script Groovy d'appel de l'interpréteur Perl

  • créer un fichier de définition de l'interface à l'interpréteur Perl 'USERHOME/TXM/scripts/user/perl-wrapper-definition.xml' contenant :
    <?xml version="1.0" encoding="UTF-8"?>
    <application name="Perl" version="0.0.0" desc="Perl interpreter">
        <progs>
            <prog exec="perl.exe" version="0.0.0" desc="Perl">
                <args>
                    <arg state="optional" type="none" name="v" desc="print version, subversion (includes VERY IMPORTANT perl info)"/>
                </args>
            </prog>
        </progs>
    </application>
  • créer un script 'USERHOME/TXM/scripts/user/CreatePerlWrapper.groovy' de création de la classe de liaison à Perl avec le contenu suivant :
    package org.txm.test
    
    /**
     * the file containing the declaration of the Perl program : ls-wrapper-definition.xml
     *
     */
    def definitionFile = new File("/home/sheiden/TXM/scripts/user/perl-wrapper-definition.xml")
    
    /**
     * The file which will contain the wrapper code : Perl.groovy
     */
    def classFile = new File("/home/sheiden/TXM/scripts/user/Perl.groovy")
    
    /**
     * the directory containing the Perl executable: /usr/bin/
     */
    def binariesDirectory = new File("/usr/bin/")
    
    /**
     * build wrapping code
     */
    def aProgram = org.txm.utils.processbuilder.ProcessBuilder.wrapProgram(definitionFile, classFile, binariesDirectory)
    
    // Try to call Perl directly
    
    /**
     * set call parameters
     */
    aProgram.setv()
    
    /**
     * call the ls external program
     */
    aProgram.perlexe()
  • Exécuter le script CreatePerlWrapper.groovy (bouton 'flèche verte' dans la barre d'outils de l'éditeur de texte)
    • ce script crée le script de liaison Perl.groovy puis provoque l'exécution de Perl
    • Sous Linux, cela produit une erreur “java.io.IOException: Cannot run program ”/usr/bin/perl.exe“ car Perl est lancé par l'exécutable 'perl' et non 'perl.exe' (bug de la classe 'ProcessBuilder')
      • pour régler le problème :
        • éditer le fichier créé USERHOME/TXM/scripts/user/Perl.groovy
          • changer la ligne 35 'args.add(binpath+”/perl.exe“);' par 'args.add(binpath+”/perl“);'
  • créer un script 'USERHOME/TXM/scripts/user/PerlExec.groovy' d'appel de Perl avec le contenu suivant :
    
    
public/executer_des_scripts_perl_depuis_txm.1403885222.txt.gz · Dernière modification: 2014/06/27 18:07 par slh@ens-lyon.fr