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

Web Perl Discussion :

[web] lancer un script perl à partir des données d'un formulaire


Sujet :

Web Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 67
    Points : 34
    Points
    34
    Par défaut [web] lancer un script perl à partir des données d'un formulaire
    Salut,

    J'arrive à récupérer les données issues d'un formulaire.

    Maintenant, j'aimerai savoir comment je peux lancer un script perl à partir de ces données.
    En fait, ces données remplacent les options que je rentrais en ligne de commande depuis mon terminal.

    J'ai cherché de la doc sur le web, j'ai trouvé énormément de doc sur la manière de récupérer des données issuers d'un formulaire mais je n'ai rien trouvé expliquant comment lancer un script à partir des données issues d'un formulaire

    qlq'1 a-t-il une solution?

    Merci beaucoup

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 62
    Points : 59
    Points
    59
    Par défaut
    Salut!

    C'est un formulaire HTML? tu peux donner le code que tu as déjà mis?
    tu veux que quand on appuie sur le bouton envoyer, ce soit un perl ou un cgi qui se lance en fonction des paramètres du formulaire, c'est ça?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 67
    Points : 34
    Points
    34
    Par défaut
    Je suis sous MAC OS.

    en effet c'est un formulaire HTML dont voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    <HTML>
    <HEAD>
    	<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
    	<META content="Microsoft FrontPage 5.0" ></HEAD>
     
    <BODY bgColor="#99CCFF" background="../Image/fond_ADN.gif" style="text-align: center">
    		<center>
    			</center>
    		<FONT size=4 aligne="center" color="#000099">
    				<form action="http://mouche.ged.pasteur.fr/cgi-bin/forum.pl" method="post">
    					&nbsp;
    					<p align="center">1.&nbsp; Entr&eacute;e des Donn&eacute;es</p>
    					<table border="2" bordercolor="#000099" bgcolor="#6666CC" align="center" size=110 width="531">
     
    						<tr>
    							<td>Quel type de format de fichier voulez-vous entrer ?<br>
    								<INPUT name=FASTA type=radio value="FASTA">&nbsp; FASTA<br>
    								<INPUT name=FASTA type=radio value="non FASTA" checked >&nbsp;non FASTA<BR>
    								<BR>
     
    						</tr>
    						</td>
    						<tr>
    							<td width="519">
    								&nbsp; S&eacute;lectionnez votre fichier d'entr&eacute;e:<BR>
     
    								&nbsp &nbsp &nbsp	<INPUT name=fic_e type="file" size="20" value=Parcourir..>
    								<p></p>
    							</td>
    						</tr>
    						<tr>
    							<td align="center" width="519">
    		&nbsp;
    <INPUT name=effacer1 type="reset" value=Effacer><BR>
     
     
    						</tr>
    						</td><a name="#dac">
    					</table>
    					<!--partie selection-->
    					<p align="center">&nbsp;</p>
    					<p align="center">2.&nbsp; S&eacute;lection des Crit&egrave;res et Attribution des Scores</p>
    					<table border="2" bordercolor="#000099" bgcolor="#6666CC" align="center" size=110 width="531">
    						<tr>
    							<td>Longueur de la s&eacute;quence :&nbsp; <INPUT name=longueur size="3"  VALUE="34"><BR>
    								<BR>
    							</td>
    						</tr>
     
    						<tr>
    							<td>Poids des diff&eacute;rents tests:&nbsp;<BR>Recherche de Motif <INPUT name=MOTIF size="2" VALUE="1"><BR>Nombre de paire de bases AT <INPUT name=AT size="2" VALUE="1"><BR>Nombre de paire de bases GC <INPUT name=GC size="2" VALUE="1"><BR>
    								<BR>
    							</td>
    						</tr>
     
    						<tr>
    							<td align="center"> <INPUT name=effacer2 type="reset" value=Effacer>
     
    						</tr>
    						</td><a name="#dac">
    					</table>
    					<p align="center">&nbsp;</p>
    					<p align="center">3.&nbsp; R&eacute;sultats</p>
    					<table border="2" bordercolor="#000099" bgcolor="#6666CC" align="center" size=110 width="531">
    						<tr>
    						    <BR>
    							<td width="519">&nbsp; S&eacute;lectionnez votre fichier de sortie:<BR>
     
    								&nbsp &nbsp &nbsp	<INPUT name=fic_s type="file" size="20" value=Parcourir..>
    								<p></p>
    							</td>
    						</tr>
    						<tr>
    							<td>Choisissez le mode de sortie des r&eacute;sultats<br>
    								<INPUT name=sortie type=radio value="compacte" checked >&nbsp; Compacte<br>
    								<INPUT name=sortie type=radio value="detaillee">&nbsp; D&eacute;taill&eacute;e<BR>
    								<BR>
    							</td>
    						</tr>
    						<tr>
    							<td>Choisissez le type de tri que vous d&eacute;sirez.<BR>
     
    								 Affichage des scores par ordre des:&nbsp<SELECT name="tri">
    									<OPTION value="0" >Abscisses croissantes</OPTION>
    									<OPTION value="1" selected>Abscisses d&eacute;croissants</OPTION>
    									</SELECT><BR>
    								<BR>
    							</td>
    						</tr>
    						<tr>
     
    							<td align="center"> <INPUT name=rechercher type="submit" value=Rechercher> <INPUT name=effacer3 type="reset" value=Effacer>
    				     	  </tr>
    						<a name="#dac">
    					</table>
    				</FORM>
    			</FONT><br>
    		<br>
    	</BODY></HTML>
    qd j'appuie sur le bouton "submit", c'est le fichier forum.pl qui se lance et qui récupère les données du formulaire.

    voici mon fichier forum.pl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #!/usr/bin/perl -Tw
     
    require 5.001;
    use strict;
    require "./cgi-lib.pl";
     
    MAIN:
    {
      my (%input,   # contient les donnees du CGI
          $text,    # Munged version of the text field entered by the user
          $field);  ## tous les champs saisis par l'utilisateur
     
      &ReadParse(\%input); ##	ReadParse : permet de decoder le contenu des formulaires et de 
      ## mettre les valeurs dans le tableau associatif spécifié. Utilisation : &ReadParse(*in);
     
     # verifie que toutes les donnees ont ete saisies par l'utilisateur
      foreach $field (qw(FASTA fic_e longueur MOTIF AT GC fic_s sortie tri rechercher )) {
        &CgiDie("Error: Missing field '$field'\n") unless defined $input{$field};
      }
     
      print &PrintHeader; ## PrintHeader : permet d'inclure le content-type necessaire pour 
      ## afficher du texte/html. Utilisation : print &PrintHeader;
      print &HtmlTop ("Formulaire_logiciel"); ## HtmlTop : renvoie le debut d'un fichier
      ## html (titre, ...) en prenant en compte le titre passe comme parametre. 
     
      # ($text = $input{'text'}) =~ s/\n/\n<BR>/g; ## affichage de la texte area ie encadre
      ## add <BR>'s after carriage returns. 
     
    print <<ENDOFTEXT;
    <HR> $input{'FASTA'} $input{'fic_e'} $input{'longueur'} $input{'MOTIF'} $input{'AT'} 
    $input{'GC'} $input{'fic_s'} $input{'sortie'} $input{'tri'} $input{'rechercher'} 
     
    ENDOFTEXT
     
      print "<HR><BR>Liste des variables saisies par l'utilisateur: <P>";
      print &PrintVariables(\%input);
     
      print &HtmlBot; ## HtmlBot : renvoie le bas d'un fichier html 
    }
    Dans mon browser, j'obtients bien les données du formulaire:

    Formulaire_logiciel
    ------------------------------------------------------------------------
    non FASTA cyclophilin 34 1 1 1 Sortie compacte 1 Rechercher
    ------------------------------------------------------------------------
    Liste des variables saisies par l'utilisateur:


    AT
    :1:
    FASTA
    :non FASTA:
    GC
    :1:
    MOTIF
    :1:
    fic_e
    :cyclophilin:
    fic_s
    :Sortie:
    longueur
    :34:
    rechercher
    :Rechercher:
    sortie
    :compacte:
    tri
    :1:
    En parallèle, j'ai un script perl qui prend en argument, en ligne de commande, exactement les même données que celles du formulaire et qui tourne correcteement en affichant les résultats du script dans mon terminal.
    Ce que je souhaite faire maintenent c'est de faire une interface web (donc utiliser le CGI) plutôt que le terminal. Mon problème maintenant est que à partir des données que j'ai extraite du formulaire, j'aimerai pouvoir lancer mon script, mais je ne sais comment faire?

    j'ai vu qu'il y avait d'autres post qui traitaient de ce sujet mais je n'ai pas tout compris......
    http://www.developpez.net/forums/viewtopic.php?t=200654
    et
    http://www.developpez.net/forums/viewtopic.php?t=200036

    MERCI BEAUCOUP DE VOTRE AIDE

  4. #4
    Jeh
    Jeh est déconnecté
    Membre actif Avatar de Jeh
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Points : 250
    Points
    250
    Par défaut
    Donc tu veux lancer un second script perl dans ton forum.pl, c'est ça ?
    La réponse dans ton post précedent de ma2th était correcte :
    utilises la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("perl ton_script.pl param1 param2")
    Les valeurs param1 et param2 étant les valeurs de ton tableau associatif (données de ton formulaire).

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 67
    Points : 34
    Points
    34
    Par défaut
    Donc si j'ai bien compris, je dois rajouter :
    system ("perl siRNA_selection_final.pl $input{'FASTA'} $input{'fic_e'} $input{'longueur'} $input{'pas'} $input{'GC'} $input{'MOTIF'} $input{'AU'} $input{'fic_s'} $input{'sortie'} $input{'tri'} $input{'rechercher'});
    dans mon fichier forum.pl

    Mais à quel endroit de ce fichier dois-je le rajouter?

    Merci

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 67
    Points : 34
    Points
    34
    Par défaut
    j'ai inséré la ligne :
    system ("perl siRNA_selection_final.pl" $input{'FASTA'} $input{'fic_e'} $input{'longueur'} $input{'MOTIF'} $input{'AT'} $input{'GC'} $input{'fic_s'} $input{'sortie'} $input{'tri'} $input{'rechercher'});
    dans mon fichier forum.pl juste après
    ENDOFTEXT
    mais j'ai un message d'erreur qui apparait dans mon browser :
    Internal Server Error
    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.
    et si je vais voir dans le fichier error log, j'ai:
    Premature end of script

  7. #7
    Jeh
    Jeh est déconnecté
    Membre actif Avatar de Jeh
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Points : 250
    Points
    250
    Par défaut
    tente un pour peut être plus de détails.

    Pour l'insertion de system dans ton code, c'est à toi de voir !
    A partir du moment où ce n'est pas dans le code html de ta page (dans le print<<ENDOFTEXT), ça passera n'importe où.

    Si tu pouvais mettre délestage sur ton autre sujet ou résolu, peu importe.
    Merci.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 67
    Points : 34
    Points
    34
    Par défaut
    Je tente de réexpliquer mon problème :

    J'ai un script perl qui fonctionne lorsque je le lance en ligne de commande:
    perl mon_script.pl --OPTION1 VALEUR_OPTION1 --OPTION2 VALEUR_OPTION2
    (j'ai 10 options au total)

    Je souhaiterai maintenant créer une interface sur le web, qui utilise un
    formulaire et le CGI.
    J'ai donc un fichier script_cgi.pl qui me permet de récupérer les données
    saisies par l'utilisateur, dans le formulaire, et qui doit faire appel au
    fichier mon_script.pl et lui transmettre les données issues du formulaire.
    Je n'ai pas de problème au niveau de la récupération des données mais je
    rencontre un problème au niveau de la transmission des données issues du
    formulaire vers mon_script.pl.

    On m'a conseillé d'utiliser, dans mon fichier script_cgi.pl, la fonction:
    system("perl mon_script.pl" --OPTION1 $input{'OPTION1'} --OPTION2 $input{'OPTION2'});
    mais lorsque je procède ainsi, il apparait le message d'erreur suivant dans
    mon browser :
    "Internal Server Error
    The server encountered an internal error or misconfiguration and was unable to
    complete your request. Please contact the server administrator, [no address given]
    and inform them of the time the error occurred, and anything you might have done
    that may have caused the error. More information about this error may be available
    in the server error log.
    Et dans le "server error log", j'ai le message :
    Premature end of script headers: /Library/WebServer/CGI-Executables/script_cgi.pl

    Merci de votre aide,


  9. #9
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Si tu as utilisé system("perl mon_script.pl" --OPTION1 $input{'OPTION1'} --OPTION2 $input{'OPTION2'}); c'est normal que ça n'ait pas marché, cette syntaxe n'est pas correcte, tu dois faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system("perl", "mon_script.pl", "--OPTION1", $input{'OPTION1'}, "--OPTION2", $input{'OPTION2'});
    --
    Jedaï

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 67
    Points : 34
    Points
    34
    Par défaut
    En fait, maintenant, ca marche +/- c'est-à-dire que je n'ai plus de message d'erreur. Ouf
    En effet, je m'étais rendu compte que la syntaxe n'était pas correcte,
    dc j'ai essayé avec :
    system("perl mon_script.pl --OPTION1 $input{'OPTION1'} --OPTION2 $input{'OPTION2'}");
    Mais, j'ai tjrs un pbl car il n'y a aucun affichage des résultats ds la page HTML, dc mon pbl vient du fait que je ne sais pas comment afficher les résultats en html ( or je sais que ce programme affiche des résultats car qd je le fait tourner depuis le terminal, des résultats s'affichent).

    Comment faire?

  11. #11
    Jeh
    Jeh est déconnecté
    Membre actif Avatar de Jeh
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Points : 250
    Points
    250
    Par défaut
    utilise une librairie...
    Comme ça tu pourras visualiser les résultats dans ta page html

  12. #12
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Si tu veux récupérer les résultat, ce n'est pas system() qu'il faut utiliser mais `` (ce sont des quotes inversés) ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my @lines = `perl mon_script.pl --OPTION1 $input{'OPTION1'} --OPTION2 $input{'OPTION2'}`;
    Et tu auras ton résultat dans @lines.

    --
    Jedaï

  13. #13
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 608
    Points : 794
    Points
    794
    Par défaut
    Slt tlm !

    A tout hasard, si le but est d'avoir un formulaire qui permet d'exécuter du code contenu dans un script qui marche très bien en ligne de commande, pourquoi ne pas faire un doublon de ce script et lui rajouter un chapeau permettant de récupérer les variables du formulaire directement avec les bons noms de variables nécessaires à l'exécution du reste du script ? Ca serait peut-être moins chiant et plus sur que d'utiliser des appels système, non ?

    @+
    Mr6

    PS : Kinethe, use CGI est ton ami pour gérer tes formulaires => http://www.enstimac.fr/Perl/ModulesFr/CGI.html

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 67
    Points : 34
    Points
    34
    Par défaut
    Merci à tous, j'ai résolu mon probmème

    en fait la méthode de Jedai marche très bien!

    et en plus j'avais un pbl au niveau de la sortie de mon fichier.

    mais tout va bien pour le moment!

    a+

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

Discussions similaires

  1. Réponses: 26
    Dernier message: 15/06/2009, 18h02
  2. Lancer un script Perl à partir de PHP
    Par espadon1 dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 07/08/2006, 23h00
  3. Réponses: 4
    Dernier message: 16/07/2004, 10h16
  4. [web] Lancer un script en arrière plan
    Par gracouille dans le forum Web
    Réponses: 4
    Dernier message: 27/05/2004, 17h37
  5. [web] Lancer un script CGI
    Par Calou20 dans le forum Web
    Réponses: 10
    Dernier message: 01/03/2004, 17h48

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