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 :

ouverture et traitement fichier via formulaire


Sujet :

Web Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 18
    Points
    18
    Par défaut ouverture et traitement fichier via formulaire
    Bonjour
    j'ai un problème avec mes scripts perls et j'aurais bien besoin d'un coup de pouce.

    J'ai d'un coté un script d'upload qui fonctionne nickel via un formulaire.

    De l'autre j'ai un script de traitement qui s'applique sur un fichier , qui l'ouvre et chope un certains nombres d'informations dessus.Le script de traitement fonctionne quand je l'appel ds le shell en l'éxécutant sur un fichier style : C:\perl scripttraitement.pl nomdufichieràtraiter

    J'aimerai en fait combiner les deux : c'est à dire charger dans mon formulaire le fichieràtraiter pour qu'il l'upload , ouvre le fichier en lecture pou le traiter sans avoir a passer par le shell...

    J'ai bidouillé à mort et jm'en sort pas alors j'appel à l'aide
    voila si quelqu'un peut m'aider , c'est vraimment cool ...
    merci bonne soirée

    Voila le script appelé par le formulaire:

    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
    #!/usr/bin/perl 
     
     use CGI;
     
     $upload_dir = "/upload";
     
     $query = new CGI;
     
     $filename = $query->param("nomdufichieràtraiter");
     $filename =~ s/.*[\/\\](.*)/$1/;
     $upload_filehandle = $query->upload("nomdufichieràtraiter");
     
     open UPLOADFILE, ">$upload_dir/$filename";
     
     binmode UPLOADFILE;
     
     while ( <$upload_filehandle> )
     {
       print UPLOADFILE;
     }
     
     close UPLOADFILE;
     
     print $query->header ( );
     print <<END_HTML;
     
     <HTML>
     <HEAD>
     <TITLE>Thanks!</TITLE>
     </HEAD>
     
     <BODY>
     
     <P>Nickel t'as uploadé gamin</P>
     
     
     
     </BODY>
     </HTML>
     
     END_HTML
    Voila le coe HTML du formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <HTML>
     <HEAD></HEAD>
     <BODY>
     <FORM ACTION="upload.cgi" METHOD="post" ENCTYPE="multipart/form-data">
    Fichier à uploader: <INPUT TYPE="file" NAME="nomdufichieràtraiter">
     <INPUT TYPE="submit" NAME="Submit" VALUE="Submit Form">
     </FORM>
     </BODY>
    </HTML>
    voila mon script de traitement que jusqu'à présent je fais marcher dans le shell sur le fichieràtraiter
    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
     
    #!/usr/bin/perl
    sub tableau_texte{
        	my $fichier1=$_[0];
            my $fich= "essai.txt";
    	open BOB, '>', $fich
    	or die "Couldn't open $fich : $!\n";
    	open YEAST, "$fichier1";
    	while (<YEAST>){
    		if(($_=~/^>\s(\d)\:(\d+)-(\d+)\s(\W)/) and ($lignePrecedente==1)){
    			if($1!=1){
    				close $fichier1;
    				close (BOB);
    				return;
    			}
    		}
    		if($_=~/^>\s(\d)\:(\d+)-(\d+)\s(\W)/){
    			if($1==1){@ligne=($4.$2,$4.$3);}
    			if($1<$nbGenome && $1!=1){push(@ligne,$4.$2,$4.$3);}
    			if($1==$nbGenome){
    				push(@ligne,$4.$2,$4.$3);
             			print BOB ("@ligne\n");
       			}
    		}
    		if($_=~/^=/){$lignePrecedente=1;}
    		else{$lignePrecedente=0;}
        	}
     
    	close YEAST;
      	close BOB;
     
    }
    tableau_texte ($ARGV[0]);

  2. #2
    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
    Et qu'est-ce qui ne marche pas exactement ? Le fichier est-il bien uploadé dans le bon répertoire ? (en passant je te conseille d'utiliser File::Copy plutôt que de copier ligne par ligne... Tu surcharges inutilement ton serveur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/usr/bin/perl
    sub tableau_texte{
        	my $fichier1=$_[0];
            my $fich= "essai.txt";
    	open BOB, '>', $fich
    	or die "Couldn't open $fich : $!\n";
    	open YEAST, "$fichier1";
    	while (<YEAST>){
    		if(($_=~/^>\s(\d)\:(\d+)-(\d+)\s(\W)/) and ($lignePrecedente==1)){
    			if($1!=1){
    				close $fichier1;
    Il faudrait remplacer celui-là aussi par "close YEAST;".

    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
     
    				close (BOB);
    				return;
    			}
    		}
    		if($_=~/^>\s(\d)\:(\d+)-(\d+)\s(\W)/){
    			if($1==1){@ligne=($4.$2,$4.$3);}
    			if($1<$nbGenome && $1!=1){push(@ligne,$4.$2,$4.$3);}
    			if($1==$nbGenome){
    				push(@ligne,$4.$2,$4.$3);
             			print BOB ("@ligne\n");
       			}
    		}
    		if($_=~/^=/){$lignePrecedente=1;}
    		else{$lignePrecedente=0;}
        	}
     
    	close YEAST;
      	close BOB;
     
    }
    tableau_texte ($ARGV[0]);
    Et $nbGenome ? Il n'est jamais initialisé, jamais déclaré (tu as encore omis de mettre le pragma "strict"...), si c'est là l'ensemble de ton script, ça ne risque pas de marcher.

    --
    Jedaï

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    Ok oK alors deja merci pour tes conseils
    En fait j'ai pas mis l'intégralité de mon script de traitement , le $nbregenome est initialisé et calculé plus loin ds le programme...

    Mon problème c'est de faire une interface HTML avec un formulaire qui charge le fichier qui est sur mon ordi ,récupère son nom , le stock dans une variable et effectue en meme temps le traitement pour recupérer des donnés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $filename = $query->param("nomdufichieràtraiter");#permet de recup le nomdufichier chargé dans le formulaire
     $filename =~ s/.*[\/\\](.*)/$1/;
    J'ai ses deux scripts qui n'ont pas de lien direct mais j'aimerai les lier .
    C'est à dire ne pas passer par le shell , mais par une interface HTML, qui par un formulaire récupère le nom du fichier sur lequel je veux appliquer un traitement ( et qu"il l'applique du coup juste en cliquant sur le bouton du formulaire)

    Jusqu'à present mon script de traitement , fonctionne dans le shell et traite le fichier qui est est dans le ARGV[0]
    J'aimerai en quelque sorte que dans mon argV[0] il y ait le fichier chargé dans le formulaire pour qu'il le traite.
    J'ai tenté cela ...de mettre le $filename(donc nomfichier récup dans le formulaire) dans le argv[0] pour qu'il applique la fonction de traitement dessus mais ca marche pas :-(.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sub tableau_texte{
        	$filename=$_[0];
    #jvous passe tous le reste du code qui marche
    tableau_texte ($ARGV[0]);
    Bref j'ai essayé d'être le plus clair possible , je sais pas si j'ai réussi ...
    Si vous avez percuté merci pour le coup de main
    Merki A++

  4. #4
    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
    En bref tu veux appeler un programme externe (un script Perl dans ce cas) à partir de ton script CGI ? Dans ce cas il suffit d'utiliser system() ou les backquotes. Va jeter un coup d'oeil à la partie de la FAQ consacrée au processus.

    --
    Jedaï

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    En bref j'aimerai que, à chaque fois , le nouveau fichier chargé dans le formulaire soit pris comme paramètre de mon script perl.

    Le formulaire appel déjà mon script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <body>
     <FORM ACTION="script.cgi" METHOD="post"  
     <ENCTYPE="multipart/form-data">
     <INPUT TYPE="file" NAME="FichierDeSortiMauve">
      <INPUT TYPE="submit" NAME="Submit" VALUE="Submit Form">
    </body>
    Mais comment dans mon script , récupéré le path du fichier mis dans le formulaire , pour l'ouvrir et le traiter .
    Genre que cliker sur le bouton du formulaire revienne à faire dans le shell C:\script.pl suivi du 'nomfichier' surlequel s"éxecute le script.
    Puisque dans mon script j'utiliise des fonctions qui s'applique sur ce nomfichier stocké en paramètre dans le argv[0]
    Ce que j'arrive pas à faire c'est que , le nomfichier soit stocké dans le argv[0] pour etre ouvert et traiter par le script

    Voila , je vais regarder ce que vous m'avez indiqué
    Merci je vous tiens au courant

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    Re bonjour
    alors j'ai tenté ca dans le script que j'appel via mon formulaire
    sauf qu'il ne stocke pas le nomdufichier dans $filename pour i appliquer le perl5.pl.
    Donc le script perl5.pl ne se lance pas....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!C:/Perl/bin/perl -w
    use CGI::Carp qw(fatalsToBrowser);
    use CGI;
    $query= new CGI;
    #Methode pour uploader le fichier
    $filename = $query->param("Fichier");
     #$filename =~ s/.*[\/\\](.*)/$1/;  # regex pour recuperer uniquememnt le nom du fichier
    # upload des fichiers d'analyse
    system "perl 5.pl $filename";
    une idée?
    merci

  7. #7
    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
    Je serais toi j'appliquerais plutôt ton script après avoir copié le fichier dans son répertoire final (problème de droits, de répertoire temp régulièrement nettoyé,...).

    Par ailleurs en dehors du fait que perl5.pl comme nom de script ça me paraît pas génial... (c'est pas très descriptif de l'action du script) Il y a une faute de frappe ou de copier-coller dans ton system() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system "perl perl5.pl $upload_dir/$filename";
    serait plus correct.
    Par ailleurs as-tu bien mis perl5.pl dans le même répertoire que ton CGI ?

    --
    Jedaï

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    Jpense qu'on touche au but.
    Donc oui j'ai dans un meme dossier "bool" mon script upload.cgi qui appel perl5.pl avec egalement le fichier à traiter venant d'etre upload

    Donc dans le shell

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\bool\> perl perl5.pl  fichieràtraiter
    ça fonctionne et traite mon fichieràtraiter
    (je met à la fin le fichier perl5.pl en entier pour vous montrer ce qu'il fait)

    dans mon script upload.cgi appelé par le formulaire j'ai ca
    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
    #!C:/Perl/bin/perl -w
    use CGI::Carp qw(fatalsToBrowser);
    use CGI;
    $query= new CGI;
    #Methode pour uploader le fichier
    $upload_dir = "C:/bool";
    $filename = $query->param("Fichier");
    $filename =~ s/.*[\/\\](.*)/$1/;
    $upload_filehandle = $query->upload("Fichier");
    open UPLOADFILE, ">$upload_dir/$filename";
     
     binmode UPLOADFILE;
     
     while ( <$upload_filehandle> )
     {
       print UPLOADFILE;
     }
     
     close UPLOADFILE;
     
     
    system "perl 5.pl $upload_dir/$filename"; # la j'appel mon perl5.pl 
     
    print $query->header ( );
    print<<END_HTML;
    <HTML>
    <HEAD>
    <TITLE>Thanks!</TITLE>
    </HEAD>
    <BODY>
    </P>L'Upload de $upload_dir/$filename </P>
    </BODY><P>$filename</P>  # la jvoulais juste voir s'il stocké bien les variables
    </HTML>
    END_HTML
    Donc ca ne marche pas , ...
    Je dis ca ,parcque qu'en fait si vous regardez perl5.pl il doit m'écrire un certain nombre d'infos dans un fichier essai.txt contenu dans le même dossier que tout mes scripts.Et en fait il ne fait que le vider à chaque fois ke perl5.Pl s'execute via le upload.cgi

    Une Solution?
    Merci de prendre le temps d'étudier mon problème
    Ah oui , vous parliez des droits d'accés mais je travail en local sous windows xp .voila je sais pas si ça joue ou pas mais je prefère le préciser
    A bientot


    code du perl5.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
    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
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
      #!/usr/bin/perl
    use Fcntl;
     
    #fonctions
     
    #utilise le fichier .alignment pour sortir un fichier .txt avec les blocs des différents génomes
     
    sub tableau_texte{
        	my $fichier1=$_[0];
            my $fich= "essai.txt";
    	open BOB, '>', $fich or die "Couldn't open $fich : $!\n";
    	open YEAST, "$fichier1";
    	while (<YEAST>){
    		if(($_=~/^>\s(\d)\:(\d+)-(\d+)\s(\W)/) and ($lignePrecedente==1)){
    			if($1!=1){
    				close YEAST;
    				close (BOB);
    				return;
    			}
    		}
    		if($_=~/^>\s(\d)\:(\d+)-(\d+)\s(\W)/){
    			if($1==1){@ligne=($4.$2,$4.$3);}
    			if($1<$nbGenome && $1!=1){push(@ligne,$4.$2,$4.$3);}
    			if($1==$nbGenome){
    				push(@ligne,$4.$2,$4.$3);
             			print BOB ("@ligne\n");
       			}
    		}
    		if($_=~/^=/){$lignePrecedente=1;}
    		else{$lignePrecedente=0;}
        	}
     
    	close YEAST;
      	close BOB;
    }
     
     
    #permet de créer les permutations signées pour un génome (celui de la colonne $colonne) a partir du fichier essai.txt
     
    sub comparaison{
     	my $essai="essai.txt";
    	$block=1;
    	open ESSAI, "$essai";
    	while ($ligne=<ESSAI>){
     		@cols = split(/ /,$ligne);
    		$genome{$block}=$cols[$colonne];
    		$block++;	
    	}
     
    	print "\n";
    	@keys = sort{
    		abs($genome{$a}) <=> abs($genome{$b})
    	}keys %genome;
     
    	for($i=0;$i<$block;$i++){
    		$ordreblock[$nbfois].="$keys[$i] ";
     
    	}
    	close ESSAI;
     
    }
     
    # stock les adresses des fichiers fasta utilisés et compte le nombre de génomes
     
    sub adressegenome{
    	my $fichier2="$_[0]";
    	open FICHIER2, "$fichier2";
    	while (<FICHIER2>){
    		if($_=~/^#Sequence(\d+)File\s(.*)/){
    			$adressegenome[$nbGenome]=$2;
    			$nbGenome++;
    		}	
    	}
    	close FICHIER2;
    }
       #Récupère les infos ds la première ligne des fichiers fasta comparés
     
    sub infoGenomes{
    	my $fasta="$adressegenome[$nbfois]";
    	open FASTA, "$fasta";
    	while (<FASTA>){
    		if($_=~/^>gi\|(\d+)\|(\w+)\|(\S+\.\d+)\|\s(.*)/){
    			$giNumber[$nbfois]=$1;
    			$dbid[$nbfois]=$2;
    			$accessnumber[$nbfois]=$3;
    			$definition[$nbfois]=$4;
    		}
    		else{return;}
    	}
     close FASTA;
    }
         #Déclaration des tableaux et initialisations des valeurs.
     
    @giNumber;      #  => tableau qui stocke les GI pris dans les fichiers fasta comparés
    @dbid;          #  => tableau qui stocke les database Identifiers pris dans les fichiers fasta comparés
    @accessnumber;  #  =>  tableau qui stocke les Accession Number pris dans les fichiers fasta comparés
    @definition;    #  => tableau qui stocke les Definitions pris dans les fichiers fasta comparés
    @adressegenome;	#  =>tableau stockant le chemin d'accés aux fichiers fasta comparés
    @ordreblock;    #  =>tableau stockant l'ordre des blocks de chaque génome
    $colonne=0;     #  => initialisation de la 1ere colonne a lire dans le fichier essai.txt
    $nbGenome=0;    #  => initialisation du nombre de génome
     
         #appel des fonctions et traitement
     
    adressegenome($ARGV[0]);    #  => Ouvre le Alignement et récupere les n chemins d'accés des n genomes comparés
    tableau_texte ($ARGV[0]);   #  => rempli le fichier essai.txt avec sous forme de début et fin de séquence en colonnes
    for ($nbfois=0;$nbfois<$nbGenome;$nbfois++){       #  => tri et donne les permutations signées  pour chaque genome
    	comparaison ();
    	$colonne=$colonne+2;
    	print $ordreblock[$nbfois];        #juste un test
    }
    for ($nbfois=0;$nbfois<$nbGenome;$nbfois++){       #  => récupère les infos d premiers lignes sur chaque fichier fasta
    	infoGenomes();
    }
    print $giNumber[0];             # juste un test pour voir dans le shell si ca marché

  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
    Citation Envoyé par Kobe70
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system "perl 5.pl $upload_dir/$filename"; # la j'appel mon perl5.pl
    Je croyais que ton script Perl s'appelait "perl5.pl", pas "5.pl" ??

    --
    Jedaï

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    mon script s'appel 5.pl , desolé
    ca vient pas d'un problème dans les noms...Cke je veux faire c'est appelé un script qui s'éxécute sur un parametre .Dans le paramètre doit y avoir le nomdufichieràtraiter qui pompe à chaque fois dans le speudo formulaire d'upload.

    en thérorie j'aurais besoin de deux lignes...
    Allons y par étape


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $filename = $query->param("Fichier");
    permet de récuperer le nom de fichier dans la variable $filename

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system "5.pl $filename";  #jmet  pas de $upload_dir car tout est ds le meme repertoire
    ici jappel mon script pour qu'il séxécute sur le fichier stoké dans $filename

    Bah quand je clik sur le bouton de mon formulaire il mouvre le 5.pl ds notepad ...ce qui est bien mais pas top...

    et ce qui est bizarre c'est quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    print $query->header ( );
    print<<END_HTML;
    <HTML>
    <HEAD>
    <TITLE>Thanks!</TITLE>
    </HEAD>
    <BODY>
    </BODY><P>$filename</P>  # la jvoulais juste voir s'il stocké bien les variables
    </HTML>
    END_HTML
    ds le cgi ki renvoie une page html le $filename me renvoi le nom du fichier chargé ds le formulaire...donc il la stock bien cette valeur
    pourquoi il ne ve pas lui appliquer mon script?:-(
    Jpète une pile
    Quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $filename="nomfichiertexte";
    system "5.pl $filename";
    ba ca fonctionne sur le nomfichiertexte et ca le traite
    mais quand jessaie de recup le $filename par le formulaire il ve pas ca lui plait pas
    Voila merci pour votre patience et votre aide

  11. #11
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 18
    Points
    18
    Par défaut [Perl CGI] fonction system sur un parametre du cgi
    Bonjour, j'ai un problème:
    J'ai un formulaire(POST) qui appel un script.cgi.
    Dans le script.cgi je récupère la valeur du champ rempli dans le formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $filename = $query->param("Fichier");


    Apres dans ce script perl j'appel un autre script qui prendrai comme 1er argument le $filename récupéré (nom du fichier mis dans le formulaire)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("perl","autrescript.pl","$filename")


    Voila le problème dans la commande system le $filename est vide ,...ou jexecute mal la fonction bref je suis perdu

    Tous mes fichiers et script sont ds le meme dossier.Jutilise win xp .

    Au debut de mon script.cgi j'utilise bien le USE CGI ; QUand je fais un print dans le htlm il maffiche bien la valeur de $filename. Mais dans l'appel system il se semble pas la trouvé...

    Voila merici si quelquun peut m'aider

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/03/2011, 18h49
  2. Intégrer l'ouverture d'un fichier dans formulaire conteneur (MDI)
    Par stef33150 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 15/02/2010, 15h27
  3. Erreur upload fichier via formulaire
    Par Telecaster dans le forum Langage
    Réponses: 2
    Dernier message: 05/02/2009, 11h30
  4. [Upload] Upload de plusieurs fichiers via formulaire
    Par seb67110 dans le forum Langage
    Réponses: 2
    Dernier message: 02/05/2007, 11h55
  5. [Web] Upload fichier via formulaire HTTP
    Par nik00s dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 11/08/2005, 12h27

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