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:
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:
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:
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]); |
[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:
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:
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