Programmation perl popup_menu et exécution

Programmation perl popup_menu et exécution - Perl - Programmation

Marsh Posté le 14-02-2008 à 15:32:05    

Bonjour,
 
J'ai écrit un petit programme perl, en gros voici ce que fait le programme: Dans un premier temps je vais lire un répertoire et je mets le nom des fichiers qui se trouve dans le répertoire dans un tableau. Ensuite je fais la création d'un menu déroulant qui contient le nom de mes fichiers (se sont des fichiers *.html).
 
Ce que j'aimerais faire et c'est la que je bloque, c'est quand l'utilisateur sélectionne un nom de fichier dans mon menu déroulant et puis il clique sur OK, je veux qu'il ouvre une autre page avec le contenue de mon fichier html. En principe si je vais voir le code source je devrais voir quelque chose du genre <option value=http://172.27.XX.XXX/tous_unix/tous_unix_2008-01-30.html> tous_unix_2008-01-30.html</option> mais tout ce que je vois c'est <option value="tous_unix_2008-02-13.html">tous_unix_2008-02-13.html</option> mais il ne faut pas oublier que dans mon menu déroulant je veux juste le nom de mes fichiers.
 
Si vous pouviez m'aider.
Merci de me répondre.
 

Code :
  1. #!/usr/bin/perl
  2. use CGI qw/:standard/;
  3. $rep1="D:\\rapports_des_seuils\\Tous_UNIX"; # équivaut à http://172.27.XX.XXX/tous_unix
  4. $i = 0;
  5. opendir(DIR, $rep1) || die "Impossible de lire $rep1 : $!\n";
  6. my @liste = grep { not /^[.][.]?\z/ && -r "$rep1/$_" } readdir(DIR);
  7. @liste = map{lc($_)} @liste;
  8. closedir(DIR);
  9.   print header,
  10.         start_html(-title=>'Rapport des seuils',
  11.         -bgcolor=>'gray',
  12.         ),
  13.         h1('Rapport des seuils'),
  14.         start_form(
  15.         -method=>'POST',
  16.         -action=>'',
  17.         -name=>'form1'
  18.         ),
  19.         "Liste des fichiers Unix ",
  20.         popup_menu(-name=>'menu_name',
  21.                             -values=>[@liste],
  22.                           #  -defaut=>[@liste],
  23.                           #  -onChange=>'Sub_Env()',
  24.                             -labels=>\%labels),p,
  25.         submit('OK'),
  26.         end_form,
  27.         hr;
  28.    if (param()) {
  29.        $nnrep = "http://172.27.96.172/unix/";
  30.        print "Le nom de votre fichier est ",em(param('menu_name')),p,
  31.        hr;
  32.    }

Reply

Marsh Posté le 14-02-2008 à 15:32:05   

Reply

Marsh Posté le 16-02-2008 à 10:29:00    

Normal, il manque dans ton

Code :
  1. @liste = map{lc($_)} @liste;

, la concaténation avec l'adresse de base. En effet, le readdir ne rend que le nom du fichier...
 

Reply

Marsh Posté le 18-02-2008 à 21:15:38    

Je comprends ce que tu veut dire mais si je fais la concaténation avec l'adresse de base, je me retrouve avec un menu déroulant qui contient l'adresse de base plus le nom du fichier. Ce que j'aimerais c'est ceci
<option value=http://172.27.XX.XXX/tous_unix/tous_unix_2008-01-30.html> tous_unix_2008-01-30.html</option> et non comme <option value=http://172.27.XX.XXX/tous_unix/tous_unix_2008-01-30.html> http://172.27.XX.XXX/tous_unix/tou [...] option&gt;
 
Mais je ne sais pas comment faire pour le mettre en paramètre.
 
Merci !

Reply

Marsh Posté le 19-02-2008 à 01:48:03    

Bah dans ce cas, il faut juste remplir la hash %labels comme il faut...
genre

Code :
  1. map{$labels{$_}=$root_path."$_"}@liste;


Lit la doc CGI
http://search.cpan.org/~lds/CGI.pm-3.33/CGI.pm
 
Au fait, utilise  

Code :
  1. use strict;


Il faut absolument se discipliner via cette bonne pratique


Message édité par dreameddeath le 19-02-2008 à 01:48:37
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed