Exécuter des scripts Perl depuis TXM

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

  • créer un fichier 'USERHOME/TXM/scripts/user/perl-wrapper-definition.xml' de définition de l'interface à l'interpréteur Perl 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
    
    def definitionFile = new File("/home/sheiden/TXM/scripts/user/perl-wrapper-definition.xml")
    def classFile = new File("/home/sheiden/TXM/scripts/user/Perl.groovy")
    def binariesDirectory = new File("/usr/bin/")
    
    def aProgram = org.txm.utils.processbuilder.ProcessBuilder.wrapProgram(definitionFile, classFile, binariesDirectory)
    
    // Try to call Perl directly
    
    aProgram.setv()
    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.txt · Dernière modification: 2014/06/27 18:08 par slh@ens-lyon.fr