Forum Programmation.perl comment integrer un ".bat" dans un programme perl

Posté par  .
Étiquettes : aucune
0
16
nov.
2005
autamatique du langage médical".

le professeur, nous a confié un projet en perl, le programme doit faire appel à un script.bat.
notre problème c'est qu'on ne sais pas comment appeler un script (.bat) à l'interieur d'un programme perl, où bien comment on peut mettre les lignes du script dans le programme perl!!
rmq: le script dont je parle est une suite de commande qui permet d'exploiter un logiciel OpenSource " UNITEX" pour le traitement et la recherche des _expression dans un fichier source.

dans l'attente de votre réponse je vous prie Monsieur d'agréer mes salutations les plus distinguées.

nelfadly@yahoo.fr
  • # system() ou exec()

    Posté par  (site web personnel) . Évalué à 2.

    En quel langage est écris le fichier .bat ?
    si c'est un langage inteprété par le système (shell-script par exemple)
    vous pouvez l'éxécuter en utilisant l'une des deux commandes:
    exec("fichier.bat")
    ou
    system("fichier.bat")

    ces deux fonctions sont différentes dans leur implémentation (system() fais un fork() puis attend la din de l'éxécution, alors que exec() ne fork() pas) mais le résultat est équivalent.
    --
    http://perldoc.perl.org/functions/system.html
    et plus généralement : http://perldoc.perl.org

    Tout homme qui dirige, qui fait quelque chose, a contre lui ceux qui voudraient faire la même chose, ceux qui font précisément le contraire, et surtout la grande armée des gens d'autant plus sévères qu'ils ne font rien du tout. -- Jules Claretie

    • [^] # Re: system() ou exec()

      Posté par  . Évalué à 0.

      merci beaucoup , j'ai mis exec et ça marche trés bien, je suis vraiment content, y a des pro dans ce forum ;-)
  • # interet?

    Posté par  . Évalué à 1.

    perso je vois pas l'interet d'appeler un .bat ... en tout cas je vois pas grand chose qu'on peut faire dans un .bat qu'on ne puisse faire en perl. a part a la limite, peut etre si il existe deja mais meme dans ce cas ca reste debile.
    enfin moi je dis ca.... c'est juste que si plus de fichier .bat et ben plus de probleme pour l'appeler...
    • [^] # Re: interet?

      Posté par  . Évalué à 1.

      en fait je suis obligé d'utiliser le script.bat car il existe déjà, mais je pense que vous avez raison, on peut tout fair avec Perl, ;-)
      merci encore
      • [^] # a l aide...perl

        Posté par  . Évalué à 1.

        Bonjour
        Dans mon programme ….
        ….

        open (FILE3, ">regexp.txt");
        for(my $i=0;$i <= $#tab;$i++){
        print FILE3 "$tab[$i] ";
        }#for
        close (FILE3);
        exec ("test3.bat");
        ….

        le contenu de test3.bat est le suivant :

        "C:\Unitex\App\Reg2Grf" "C:\Documents and Settings\naji\Mes documents\French\regexp.txt"
        "C:\Unitex\App\Grf2Fst2" "C:\Documents and Settings\naji\Mes documents\French\regexp.grf"
        "C:\Unitex\App\Locate" "C:\Documents and Settings\naji\Mes documents\French\Corpus\80jours.snt" "C:\Documents and Settings\naji\Mes documents\French\regexp.fst2" "C:\Documents and Settings\naji\Mes documents\French\Alphabet.txt" l i 200
        "C:\Unitex\App\Concord" "C:\Documents and Settings\naji\Mes documents\French\Corpus\80jours_snt\concord.ind" "Courier new" 3 40 55 CL html "C:\Documents and Settings\naji\Mes documents\French\Alphabet_sort.txt"
        Pause


        Rmq : notre programme est situé au "C:\Documents and Settings\naji\Mes documents\French\

        Probléme : le programme perl arrive à écrire dans le fichier « regexp.txt » mais le script « test3.bat » n’arrive pas à exploiter ce dernier.
        Est-ce un probléme de blanc, de codage de fichier…
        Je vous remercie par avance
        • [^] # Re: a l aide...perl

          Posté par  (site web personnel) . Évalué à 1.

          for(my $i=0;$i <= $#tab;$i++){
          print FILE3 "$tab[$i] ";
          }#for


          ouch ca c'est pas du beau perl.

          en perl tu as du "sucre syntaxique" pour iterer sur un tableau :

          foreach my $value (@tab) {
          print FILE3 "$value ";
          }


          (il y a plus court mais ce serait moins lisible, autant en rester là pour le moment quand on débute)
  • # si vous avez une idée de ce qui se passe!!, n'hésitez pas svp

    Posté par  . Évalué à 0.

    en cherchant dans la doc du logicile OpenSource "UNITEX", j'ai remarqué que les fichier texte sans codé en Unicode Little-Endian ce qui correspond au encoding(UTF-16LE);
    donc dans avant d'écrire dans le fichier regexp.txt
    j'ai mis :
    open (FILE3,'<:encoding(UTF-16LE)', ">regexp.txt");

    donc aprés le lancement du programme le fichier est créé avec sons contenu, mais une fois que je lance le script suivant:
    ******************************************
    "C:\Unitex\App\Reg2Grf" "C:\Documents and Settings\naji\Mes documents\French\regexp.txt"
    "C:\Unitex\App\Grf2Fst2" "C:\Documents and Settings\naji\Mes documents\French\regexp.grf"
    "C:\Unitex\App\Locate" "C:\Documents and Settings\naji\Mes documents\French\Corpus\80jours.snt" "C:\Documents and Settings\naji\Mes documents\French\regexp.fst2" "C:\Documents and Settings\naji\Mes documents\French\Alphabet.txt" l i 200
    "C:\Unitex\App\Concord" "C:\Documents and Settings\naji\Mes documents\French\Corpus\80jours_snt\concord.ind" "Courier new" 3 40 55 CL html "C:\Documents and Settings\naji\Mes documents\French\Alphabet_sort.txt"
    pause

    **************************************
    la console me lance l'erreure suivante:

    C:\Documents and Settings\naji\Mes documents\French>"C:\Unitex\App\Grf2Fst2" "C
    \Documents and Settings\naji\Mes documents\French\regexp.grf"
    Compiling graph regexp
    C:\Documents and Settings\naji\Mes documents\French\regexp.grf is not a unicode
    text file
    Cannot open the graph regexp.grf
    Compilation has failed

    C:\Documents and Settings\naji\Mes documents\French>"C:\Unitex\App\Locate" "C:\
    ocuments and Settings\naji\Mes documents\French\Corpus\80jours.snt" "C:\Documen
    s and Settings\naji\Mes documents\French\regexp.fst2" "C:\Documents and Setting
    \naji\Mes documents\French\Alphabet.txt" l i 200
    Loading alphabet...
    Loading fst2...
    Graph C:\Documents and Settings\naji\Mes documents\French\regexp.fst2 is empty
    Cannot load grammar C:\Documents and Settings\naji\Mes documents\French\regexp.
    st2

    C:\Documents and Settings\naji\Mes documents\French>"C:\Unitex\App\Concord" "C:
    Documents and Settings\naji\Mes documents\French\Corpus\80jours_snt\concord.ind
    "Courier new" 3 40 55 CL html "C:\Documents and Settings\naji\Mes documents\Fr
    nch\Alphabet_sort.txt"
    Loading concordance index...
    Constructing concordance...
    'SortTxt' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
    Done.

    C:\Documents and Settings\naji\Mes documents\French>"C:\Unitex\App\Grf2Fst2" "C
    \Documents and Settings\naji\Mes documents\French\regexp.grf"
    Compiling graph regexp
    C:\Documents and Settings\naji\Mes documents\French\regexp.grf is not a unicode
    text file
    Cannot open the graph regexp.grf
    Compilation has failed

    C:\Documents and Settings\naji\Mes documents\French>"C:\Unitex\App\Locate" "C:\
    ocuments and Settings\naji\Mes documents\French\Corpus\80jours.snt" "C:\Documen
    s and Settings\naji\Mes documents\French\regexp.fst2" "C:\Documents and Setting
    \naji\Mes documents\French\Alphabet.txt" l i 200
    Loading alphabet...
    Loading fst2...
    Graph C:\Documents and Settings\naji\Mes documents\French\regexp.fst2 is empty
    Cannot load grammar C:\Documents and Settings\naji\Mes documents\French\regexp.
    st2

    C:\Documents and Settings\naji\Mes documents\French>"C:\Unitex\App\Concord" "C:
    Documents and Settings\naji\Mes documents\French\Corpus\80jours_snt\concord.ind
    "Courier new" 3 40 55 CL html "C:\Documents and Settings\naji\Mes documents\Fr
    nch\Alphabet_sort.txt"
    Loading concordance index...
    Constructing concordance...
    'SortTxt' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
    Done.
    • [^] # Re: si vous avez une idée de ce qui se passe!!, n'hésitez pas svp

      Posté par  . Évalué à 0.

      je sais que ça se fait pas, mais dans notre trinome je suis le seul qui sait presque coder!!, les deux autre c'est des medécins!!, et je dois rendre ce travail demain ( c'est vraiment urgent),
      et pour résumer mon problème voilà:
      C:\Documents and Settings\naji\Bureau>"C:\Unitex\App\Reg2Grf" "C:\Documents and Settings\naji\Mes documents\French\regexp.txt"
      C:\Documents and Settings\naji\Mes documents\French\regexp.txt is not a unicode
      text file Cannot open file C:\Documents and Settings\naji\Mes documents\French\regexp.txt

      alors que le programme arrive à créer le fichier regexp.txt grace l'instruction dans le programme:

      open (FILE3,'<:encoding(UTF-16LE)', ">regexp.txt");

      le fichier et là mais le script refuse de l'utiliser!!

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.