Petit problème avec prog perl
Fermé
lavm01
Messages postés
69
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
5 octobre 2012
-
30 juil. 2007 à 18:24
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 3 août 2007 à 16:17
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 3 août 2007 à 16:17
A voir également:
- Petit problème avec prog perl
- Petit colis distribution ✓ - Forum Consommation & Internet
- Excel trier du plus grand au plus petit - Guide
- Petit 2 clavier iphone ✓ - Forum iPhone
- Petit coeur blanc ✓ - Forum Réseaux sociaux
- Musique les petit mouchoirs enterrement ✓ - Forum Musique / Radio / Clip
6 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
31 juil. 2007 à 00:06
31 juil. 2007 à 00:06
Salut,
tu dois utiliser les structures de données
voici un exemple avec tableau de tableaux (à adapter à ta situation)
tu dois utiliser les structures de données
voici un exemple avec tableau de tableaux (à adapter à ta situation)
#!/usr/bin/perl use strict;use warnings; my $i; my @liste; for ($i=0;$i<3;++$i){ $liste[$i] = [ map { uc(chr(ord($_) + $i)) } 'a'..'c' ]; } print @{$liste[0]},"\n"; print @{$liste[1]},"\n"; print @{$liste[2]},"\n"; __END__
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
31 juil. 2007 à 21:00
31 juil. 2007 à 21:00
il faudrait qu'il soit un en dessous de l'autre.
tu veut dire que le script doit afficher un fichier par ligne?!
je te propose de me dire ce que tu veux faire, et je vais voir pour la partie code, puisque je ne saisie pas très bien ce que tu veux.
Dans mon bout de code pour afficher un par ligne ça suffit d'écrire
tu veut dire que le script doit afficher un fichier par ligne?!
je te propose de me dire ce que tu veux faire, et je vais voir pour la partie code, puisque je ne saisie pas très bien ce que tu veux.
Dans mon bout de code pour afficher un par ligne ça suffit d'écrire
#!/usr/bin/perl use strict;use warnings; my $i; my @liste; for ($i=0;$i<3;++$i){ $liste[$i] = [ map { uc(chr(ord($_) + $i)) } 'a'..'c' ]; } foreach (@liste){ foreach my $e (@{$_}){ print "$e\n"; } } __END__
lavm01
Messages postés
69
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
5 octobre 2012
31 juil. 2007 à 21:21
31 juil. 2007 à 21:21
Bonjour,
Dans le fond c'est que:
Je suis en train d'écrire un programme perl qui va lire un répertoire et le mets dans une liste déroulante. Jusque là tout va bien. Sauf que j'aimerais faire plus que ça, je voudrais lire un répertoire (ce répertoire contient seulement des répertoires) et le mettre dans une liste déroulante et quand l'utilisateur sélectionne un répertoire à partir de la liste il affiche dans une autre liste (à côté ou en dessous) le contenu du répertoire. Ex: j'ai un répertoire unix que lui contient seulement des répertoires (ex: Virtualité, Bastion, Virto, etc....) et chaque répertoire contient environ 15 fichiers html (cela change à tous les jours. Donc en résumé l'utilisateur clic dans la liste des répertoires (ex: virtualité) et quand il clic il y a une autre liste qui apparaît qui contient les fichiers html et quand il choisi dans la liste le fichier html voulu, il s'ouvre dans une autre page pour l'affichier.
Voici un bout de mon code perl (il n'est vraiement pas complet et il y a plusieurs test dedans mais il fonctionne)
#!/usr/bin/perl
use CGI_Lite; # Utilisation du module CGI_Lite
$cgi=new CGI_Lite; # Création d'un nouvel objet CGI_Lite pour traiter le formulaire
%in = $cgi->parse_form_data; # Lecture des paramètres dans le tableau associatif %in
#if (document.form2.liste1A.value ne 'Environnement') {
#<select name="liste2">
#for (my $j=0; $j <= $#listeA; $j++) {
#<option value=http://172.27.96.172/unix/$listeA[$j]/$listeA[$j]> $listeA[$j]</option>
# }
#</select>
#}
$rep1="D:\\rapports_des_seuils\\Tous_UNIX";
$i = 0;
opendir(DIR, $rep1) || die "Impossible de lire $rep1 : $!\n";
my @liste = grep { not /^[.][.]?\z/ && -r "$rep1/$_" } readdir(DIR);
@liste = map{lc($_)} @liste;
closedir(DIR);
#
#
$rep="D:\\rapports_des_seuils\\UNIX";
$i = 0;
opendir(DIR, $rep) || die "Impossible de lire $rep : $!\n";
my @listeA = grep { not /^[.][.]?\z/ && -r "$rep/$_" } readdir(DIR);
@listeA = map{uc($_)} @listeA;
closedir(DIR);
$cpt = $#listeA;
#
#
#
for (my $j=0; $j <= $cpt; $j++) {
$rep="D:\\rapports_des_seuils\\UNIX\\$listeA[$j]";
#print "$rep\n";
opendir(DIR, $rep) || die "Impossible de lire $rep : $!\n";
my @listeU1 = grep { not /^[.][.]?\z/ && -r "$rep/$_" } readdir(DIR);
#@listeU = map{uc($_)} @listeU;
closedir(DIR);
my @cpt1 = $#listeU1;
#print "$listeU[0]\n";
}
#
#
#print @{$listeU[0][3]},"\n";
#print @{$listeU[7]},"\n";
#for (my $j=0; $j <= $cpt; $j++) {
#$rep="D:\\rapports_des_seuils\\UNIX\\$listeA[$j]";
#$i = 0;
#opendir(DIR, $rep) || die "Impossible de lire $rep : $!\n";
#my @listeA1 = grep { not /^[.][.]?\z/ && -r "$rep/$_" } readdir(DIR);
#@listeA1 = map{uc($_)} @listeA1;
#closedir(DIR);
#$cpt1 = $#listeA1;
#print $listeA1[2];
#}
#
print "Content-type: text/html\n\n"; # Affichage de l'entête indispensable
#print "Content-Type: text/javascript\n\n";
print <<"FIN";
<html>
<head>
<title>Rapport des exceptions</title>
<script language="JavaScript">
var Html =""; // mettre la variable html à blanc
d = new Date();
document.write('<p align="right"><font color="black">'+d.toLocaleDateString()+','+d.toLocaleTimeString()+'</font></p>');
function afficherAutre() {
alert("allo");
alert(document.forms.form1.liste1A.value);
if (document.forms.form1.liste1A.value == "http://172.27.96.172/unix/Environnement") {
alert("Je trouve environnement");
}
for (j=0; j <= $cpt; j++) {
document.forms.form1.elements['liste1A'].options[document.forms.form1.elements['liste1A'].selectedIndex].value;
// alert("je passe dans le for " +j);
// <option value=http://172.27.96.172/unix/$listeA[$j]/$listeA[$j]> $listeA[$j]</option>
}
Html += '<b>Choix du rapport: <\/b><font size="4"><\/font>';
Html += ' <select name="dtrap">';
for (i=0; i <= 15; i++) {
Html += '<option value="http://172.27.96.172/unix/$listeA[$i]/$listeA[$i]"> $listeU1[0]<\/option>';
----------------
ne fonctionne pas.
}
Html += ' <\/select>';
//-- ici On écrit le résultat du html
document.write( Html);
}
</script>
</head>
FIN
print "<body>";
print "<img style= 'float: left' src='../bandeau1.jpg' alt='logo'><p align=center><font size=4>RAPPORT D\'ANALYSE DES EXCEPTIONS DES PFI</p></font>";
print "<p> </p>";
print "<p> </p>";
print "<hr>";
#for (my $j=0; $j <= $#liste; $j++) {
# @liste[$j] =~ s/[^0-9-]+//g;
#}
print "Le contenu du répertoire: $rep1<br><br>";
print "<b>Quel rapport voulez-vous voir ?</b><br>";
print "<form name='form1' method='post' action=''>";
print "<select name=liste1>";
for (my $j=0; $j <= $#liste; $j++) {
print "<option value=http://172.27.96.172/tous_unix/$liste[$j]> $liste[$j]</option>\n";
}
print "</select>";
print "<INPUT TYPE='button' VALUE='OK' onClick='location =
form1.liste1.options[form1.liste1.selectedIndex].value;'>";
#print "</form>";
#
print "<hr>";
#for (my $j=0; $j <= $#liste; $j++) {
# @liste[$j] =~ s/[^0-9-]+//g;
#}
print "Le contenu du répertoire: $rep<br><br>";
print "<b>Choisir votre environnement ?</b><br>";
#print "<form name='form2' method='post' action=''>";
print "<select name=liste1A onChange=afficherAutre()>";
for (my $j=0; $j <= $#listeA; $j++) {
print "<option value=http://172.27.96.172/unix/$listeA[$j]> $listeA[$j]</option>";
}
print "</select>";
#print "<INPUT TYPE='button' VALUE='OK' onClick='location =
# form.liste1.options[form.liste1.selectedIndex].value;'>";
print "</form>";
print "</body>\n";
print "</html>\n";
Dans le fond c'est que:
Je suis en train d'écrire un programme perl qui va lire un répertoire et le mets dans une liste déroulante. Jusque là tout va bien. Sauf que j'aimerais faire plus que ça, je voudrais lire un répertoire (ce répertoire contient seulement des répertoires) et le mettre dans une liste déroulante et quand l'utilisateur sélectionne un répertoire à partir de la liste il affiche dans une autre liste (à côté ou en dessous) le contenu du répertoire. Ex: j'ai un répertoire unix que lui contient seulement des répertoires (ex: Virtualité, Bastion, Virto, etc....) et chaque répertoire contient environ 15 fichiers html (cela change à tous les jours. Donc en résumé l'utilisateur clic dans la liste des répertoires (ex: virtualité) et quand il clic il y a une autre liste qui apparaît qui contient les fichiers html et quand il choisi dans la liste le fichier html voulu, il s'ouvre dans une autre page pour l'affichier.
Voici un bout de mon code perl (il n'est vraiement pas complet et il y a plusieurs test dedans mais il fonctionne)
#!/usr/bin/perl
use CGI_Lite; # Utilisation du module CGI_Lite
$cgi=new CGI_Lite; # Création d'un nouvel objet CGI_Lite pour traiter le formulaire
%in = $cgi->parse_form_data; # Lecture des paramètres dans le tableau associatif %in
#if (document.form2.liste1A.value ne 'Environnement') {
#<select name="liste2">
#for (my $j=0; $j <= $#listeA; $j++) {
#<option value=http://172.27.96.172/unix/$listeA[$j]/$listeA[$j]> $listeA[$j]</option>
# }
#</select>
#}
$rep1="D:\\rapports_des_seuils\\Tous_UNIX";
$i = 0;
opendir(DIR, $rep1) || die "Impossible de lire $rep1 : $!\n";
my @liste = grep { not /^[.][.]?\z/ && -r "$rep1/$_" } readdir(DIR);
@liste = map{lc($_)} @liste;
closedir(DIR);
#
#
$rep="D:\\rapports_des_seuils\\UNIX";
$i = 0;
opendir(DIR, $rep) || die "Impossible de lire $rep : $!\n";
my @listeA = grep { not /^[.][.]?\z/ && -r "$rep/$_" } readdir(DIR);
@listeA = map{uc($_)} @listeA;
closedir(DIR);
$cpt = $#listeA;
#
#
#
for (my $j=0; $j <= $cpt; $j++) {
$rep="D:\\rapports_des_seuils\\UNIX\\$listeA[$j]";
#print "$rep\n";
opendir(DIR, $rep) || die "Impossible de lire $rep : $!\n";
my @listeU1 = grep { not /^[.][.]?\z/ && -r "$rep/$_" } readdir(DIR);
#@listeU = map{uc($_)} @listeU;
closedir(DIR);
my @cpt1 = $#listeU1;
#print "$listeU[0]\n";
}
#
#
#print @{$listeU[0][3]},"\n";
#print @{$listeU[7]},"\n";
#for (my $j=0; $j <= $cpt; $j++) {
#$rep="D:\\rapports_des_seuils\\UNIX\\$listeA[$j]";
#$i = 0;
#opendir(DIR, $rep) || die "Impossible de lire $rep : $!\n";
#my @listeA1 = grep { not /^[.][.]?\z/ && -r "$rep/$_" } readdir(DIR);
#@listeA1 = map{uc($_)} @listeA1;
#closedir(DIR);
#$cpt1 = $#listeA1;
#print $listeA1[2];
#}
#
print "Content-type: text/html\n\n"; # Affichage de l'entête indispensable
#print "Content-Type: text/javascript\n\n";
print <<"FIN";
<html>
<head>
<title>Rapport des exceptions</title>
<script language="JavaScript">
var Html =""; // mettre la variable html à blanc
d = new Date();
document.write('<p align="right"><font color="black">'+d.toLocaleDateString()+','+d.toLocaleTimeString()+'</font></p>');
function afficherAutre() {
alert("allo");
alert(document.forms.form1.liste1A.value);
if (document.forms.form1.liste1A.value == "http://172.27.96.172/unix/Environnement") {
alert("Je trouve environnement");
}
for (j=0; j <= $cpt; j++) {
document.forms.form1.elements['liste1A'].options[document.forms.form1.elements['liste1A'].selectedIndex].value;
// alert("je passe dans le for " +j);
// <option value=http://172.27.96.172/unix/$listeA[$j]/$listeA[$j]> $listeA[$j]</option>
}
Html += '<b>Choix du rapport: <\/b><font size="4"><\/font>';
Html += ' <select name="dtrap">';
for (i=0; i <= 15; i++) {
Html += '<option value="http://172.27.96.172/unix/$listeA[$i]/$listeA[$i]"> $listeU1[0]<\/option>';
----------------
ne fonctionne pas.
}
Html += ' <\/select>';
//-- ici On écrit le résultat du html
document.write( Html);
}
</script>
</head>
FIN
print "<body>";
print "<img style= 'float: left' src='../bandeau1.jpg' alt='logo'><p align=center><font size=4>RAPPORT D\'ANALYSE DES EXCEPTIONS DES PFI</p></font>";
print "<p> </p>";
print "<p> </p>";
print "<hr>";
#for (my $j=0; $j <= $#liste; $j++) {
# @liste[$j] =~ s/[^0-9-]+//g;
#}
print "Le contenu du répertoire: $rep1<br><br>";
print "<b>Quel rapport voulez-vous voir ?</b><br>";
print "<form name='form1' method='post' action=''>";
print "<select name=liste1>";
for (my $j=0; $j <= $#liste; $j++) {
print "<option value=http://172.27.96.172/tous_unix/$liste[$j]> $liste[$j]</option>\n";
}
print "</select>";
print "<INPUT TYPE='button' VALUE='OK' onClick='location =
form1.liste1.options[form1.liste1.selectedIndex].value;'>";
#print "</form>";
#
print "<hr>";
#for (my $j=0; $j <= $#liste; $j++) {
# @liste[$j] =~ s/[^0-9-]+//g;
#}
print "Le contenu du répertoire: $rep<br><br>";
print "<b>Choisir votre environnement ?</b><br>";
#print "<form name='form2' method='post' action=''>";
print "<select name=liste1A onChange=afficherAutre()>";
for (my $j=0; $j <= $#listeA; $j++) {
print "<option value=http://172.27.96.172/unix/$listeA[$j]> $listeA[$j]</option>";
}
print "</select>";
#print "<INPUT TYPE='button' VALUE='OK' onClick='location =
# form.liste1.options[form.liste1.selectedIndex].value;'>";
print "</form>";
print "</body>\n";
print "</html>\n";
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
31 juil. 2007 à 22:37
31 juil. 2007 à 22:37
Re,
il ne fallait pas doubler le message (ici le 1er perl html javascript )
il me semblais que le bout du code je l'ai vu quelque part
si le script fonctionne alors où et le problème?!
Sauf que j'aimerais faire plus que ça, je voudrais lire un répertoire (ce répertoire contient seulement des répertoires) et le mettre dans une liste déroulante et quand l'utilisateur sélectionne un répertoire à partir de la liste il affiche dans une autre liste (à côté ou en dessous) le contenu du répertoire.
Pour résume :
- tu crées un tableau @rep_pere qui contiendra tout les répertoires
- pour chaque élément de @rep_pere qui est un répertoire tu crées un tableau qui contient les fichiers (voir mon exemple)
En partant de ton code et de mon exemple voici ce que je te propose (à adapter à tes besoins )
il ne fallait pas doubler le message (ici le 1er perl html javascript )
il me semblais que le bout du code je l'ai vu quelque part
si le script fonctionne alors où et le problème?!
Sauf que j'aimerais faire plus que ça, je voudrais lire un répertoire (ce répertoire contient seulement des répertoires) et le mettre dans une liste déroulante et quand l'utilisateur sélectionne un répertoire à partir de la liste il affiche dans une autre liste (à côté ou en dessous) le contenu du répertoire.
Pour résume :
- tu crées un tableau @rep_pere qui contiendra tout les répertoires
- pour chaque élément de @rep_pere qui est un répertoire tu crées un tableau qui contient les fichiers (voir mon exemple)
En partant de ton code et de mon exemple voici ce que je te propose (à adapter à tes besoins )
#!/usr/bin/perl use strict;use warnings; my @liste_rep; opendir DIR,"/home/lami20j/lavm" or die "E/S : $!\n"; my $pwd = "/home/lami20j/lavm"; my @rep_pere = grep { ! /^\./ } sort readdir(DIR); grep { s/$_/$pwd\/$_/ } @rep_pere; for(my $i = 0; $i < @rep_pere + 0;++$i){ opendir SOUSDIR,"$rep_pere[$i]" or warn "E/S : $!\n"; $liste_rep[$i] = [ grep { ! /^\./ && s/$_/uc($_)/e } readdir(SOUSDIR) ]; } { local $"="\n"; print "$rep_pere[0]\n"; print "@{$liste_rep[0]}\n"; print "$rep_pere[1]\n"; print "@{$liste_rep[1]}\n"; print "$rep_pere[2]\n"; print "@{$liste_rep[2]}\n"; } __END__
lavm01
Messages postés
69
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
5 octobre 2012
31 juil. 2007 à 22:58
31 juil. 2007 à 22:58
Merci tu es très gentil, je vais me débrouiller avec ça. Je ne pense pas que le code tu l'ai vu quelque part c'est moi qui l'a fait, c'est pour mon intranet.
Merci encore !
P.S. Peut-être que nous nous sommes déjà croisé mais ton pseudo me dit rien.
Bye
Alp (peut-être) car tu es très bon en perl et moi je commence à peine.
Merci encore !
P.S. Peut-être que nous nous sommes déjà croisé mais ton pseudo me dit rien.
Bye
Alp (peut-être) car tu es très bon en perl et moi je commence à peine.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
31 juil. 2007 à 23:17
31 juil. 2007 à 23:17
Je ne pense pas que le code tu l'ai vu quelque part c'est moi qui l'a fait, c'est pour mon intranet.
En faut je voulais dire que c'est un doublon sur ccm de ta part :-)
Peut-être que nous nous sommes déjà croisé mais ton pseudo me dit rien.
Ben, maintenant je peux te confirmer :-))
regarde ce lien perl tk et tu te rappeleras :-))
En fait je pense que c'est la même chose sauf que maintenant tu veux utiliser le web pour faire ça.
En faut je voulais dire que c'est un doublon sur ccm de ta part :-)
Peut-être que nous nous sommes déjà croisé mais ton pseudo me dit rien.
Ben, maintenant je peux te confirmer :-))
regarde ce lien perl tk et tu te rappeleras :-))
En fait je pense que c'est la même chose sauf que maintenant tu veux utiliser le web pour faire ça.
lavm01
Messages postés
69
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
5 octobre 2012
1 août 2007 à 15:13
1 août 2007 à 15:13
Salut,
effectivement pour Perl TK, j'avais commencer avec ce langage puis je suis revenu avec Perl, le Perl TK n'était pas la solution pour moi. Disons que je fait du Perl à temps perdu car je suis programmeur analyste en SAS (c'est ma job). Tu viens de quel coin du monde, moi je suis du Canada, je sais qu'il y a beaucoup de personnes de la France sur ce site.
Merci encore !
A +
effectivement pour Perl TK, j'avais commencer avec ce langage puis je suis revenu avec Perl, le Perl TK n'était pas la solution pour moi. Disons que je fait du Perl à temps perdu car je suis programmeur analyste en SAS (c'est ma job). Tu viens de quel coin du monde, moi je suis du Canada, je sais qu'il y a beaucoup de personnes de la France sur ce site.
Merci encore !
A +
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
1 août 2007 à 15:44
1 août 2007 à 15:44
Re,
Tu viens de quel coin du monde,
France
Sache que Perl TK c'est un module, mais le langage reste toujours Perl :-))
Tu viens de quel coin du monde,
France
Sache que Perl TK c'est un module, mais le langage reste toujours Perl :-))
lavm01
Messages postés
69
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
5 octobre 2012
3 août 2007 à 15:37
3 août 2007 à 15:37
Salut,
J'ai encore une autre question ou problème, si tu as le temps et si tu veux m'aider j'aimerais bien. Alors voici le problème.
J'écris présentement un programme perl (repertoire.pl) avec une sortie html et une une inclusion de javascript dedans. Le but du programme est de lire un répertoire, ce répertoire contient juste des répertoires et dans chacun des répertoires il y a environ 15 fichiers html. Dans une première liste déroulante il y a le nom des répertoires et quand l'usager clic sur l'un des répertoires qu'il y a dans la liste déroulante il apparaît une autre liste déroulante que lui contient la liste des 15 fichiers html (ce sont des rapports) ensuite il clic sur l'un des 15 fichiers html et là le rapport s'affiche.
Mais le problème est que je suis incapable de passer la liste des 15 fichiers html dans mon javascript. J'ai cherché partout et je n'ai rien trouvé sur ce sujet (ex: FAQ perl, cours perl, sur le site de perl, etc....) Si quelqu'un pouvait m'aider.
Voici mon script perl
#!/usr/bin/perl
use CGI_Lite;
$cgi=new CGI_Lite;
%in = $cgi->parse_form_data;
$rep1="D:\\rapports_des_seuils\\Tous_UNIX";
$i = 0;
opendir(DIR, $rep1) || die "Impossible de lire $rep1 : $!\n";
my @liste = grep { not /^[.][.]?\z/ && -r "$rep1/$_" } readdir(DIR);
@liste = map{lc($_)} @liste;
closedir(DIR);
#
$rep="D:\\rapports_des_seuils\\UNIX";
$i = 0;
opendir(DIR, $rep) || die "Impossible de lire $rep : $!\n";
my @listeA = grep { not /^[.][.]?\z/ && -r "$rep/$_" } readdir(DIR);
@listeA = map{uc($_)} @listeA;
closedir(DIR);
$cpt = $#listeA;
#
for (my $j=0; $j <= $cpt; $j++) {
$rep="D:\\rapports_des_seuils\\UNIX\\$listeA[$j]";
opendir(DIR, $rep) || die "Impossible de lire $rep : $!\n";
my @listeU1 = grep { not /^[.][.]?\z/ && -r "$rep/$_" } readdir(DIR);
# ici il faudrait que @listeU1 puisse s'incrémenter tout seul i.e
# @listeU$j donc deviendrait @listeU1 puis @listeU2 et ainsi de suite..
# ou un autre moyen je ne sais plus...
@listeU1 = map{uc($_)} @listeU1;
closedir(DIR);
my @cpt1 = $#listeU1;
}
#
print "Content-type: text/html\n\n"; # Affichage de l'entête indispensable
print <<"FIN";
<html>
<head>
<title>Rapport des exceptions</title>
<script language="JavaScript">
var Html =""; // mettre la variable html à blanc
d = new Date();
document.write('<p align="right"><font color="black">'+d.toLocaleDateString()+','+d.toLocaleTimeString()+'</font></p>');
function afficherAutre() {
alert("allo");
alert(document.forms.form1.liste1A.value);
if (document.forms.form1.liste1A.value == "http://172.xx.xx.xxx/unix/Environnement") {
alert("Je trouve environnement");
}
for (j=0; j <= $cpt; j++) {
document.forms.form1.elements['liste1A'].options[document.forms.form1.elements['liste1A'].selectedIndex].value;
// alert("je passe dans le for " +j);
// <option value=http://172.xx.xx.xxx/unix/$listeA[$j]/$listeA[$j]> $listeA[$j]</option>
}
Html += '<b>Choix du rapport: <\/b><font size="4"><\/font>';
Html += ' <select name="dtrap">';
for (i=0; i <= 15; i++) {
Html += '<option value="http://172.xx.xx.xxx/unix/$listeA[$i]/$listeA[$i]"> $listeU1[$i]<\/option>';
}
Html += ' <\/select>';
//-- ici On écrit le résultat du html
document.write( Html);
}
</script>
</head>
FIN
print "<body>";
print "<img style= 'float: left' src='../bandeau1.jpg' alt='logo'><p align=center><font size=4>RAPPORT D\'ANALYSE DES EXCEPTIONS DES PFI</p></font>";
print "<p> </p>";
print "<p> </p>";
print "<hr>";
print "Le contenu du répertoire: $rep1<br><br>";
print "<b>Quel rapport voulez-vous voir ?</b><br>";
print "<form name='form1' method='post' action=''>";
print "<select name=liste1>";
for (my $j=0; $j <= $#liste; $j++) {
print "<option value=http://172.xx.xx.xxx/tous_unix/$liste[$j]> $liste[$j]</option>\n";
}
print "</select>";
print "<INPUT TYPE='button' VALUE='OK' onClick='location =
form1.liste1.options[form1.liste1.selectedIndex].value;'>";
#
print "<hr>";
print "Le contenu du répertoire: $rep<br><br>";
print "<b>Choisir votre environnement ?</b><br>";
print "<select name=liste1A onChange=afficherAutre()>";
for (my $j=0; $j <= $#listeA; $j++) {
print "<option value=http://172.27.96.172/unix/$listeA[$j]> $listeA[$j]</option>";
}
print "</select>";
print "</form>";
print "</body>\n";
print "</html>\n";
Merci !
J'ai encore une autre question ou problème, si tu as le temps et si tu veux m'aider j'aimerais bien. Alors voici le problème.
J'écris présentement un programme perl (repertoire.pl) avec une sortie html et une une inclusion de javascript dedans. Le but du programme est de lire un répertoire, ce répertoire contient juste des répertoires et dans chacun des répertoires il y a environ 15 fichiers html. Dans une première liste déroulante il y a le nom des répertoires et quand l'usager clic sur l'un des répertoires qu'il y a dans la liste déroulante il apparaît une autre liste déroulante que lui contient la liste des 15 fichiers html (ce sont des rapports) ensuite il clic sur l'un des 15 fichiers html et là le rapport s'affiche.
Mais le problème est que je suis incapable de passer la liste des 15 fichiers html dans mon javascript. J'ai cherché partout et je n'ai rien trouvé sur ce sujet (ex: FAQ perl, cours perl, sur le site de perl, etc....) Si quelqu'un pouvait m'aider.
Voici mon script perl
#!/usr/bin/perl
use CGI_Lite;
$cgi=new CGI_Lite;
%in = $cgi->parse_form_data;
$rep1="D:\\rapports_des_seuils\\Tous_UNIX";
$i = 0;
opendir(DIR, $rep1) || die "Impossible de lire $rep1 : $!\n";
my @liste = grep { not /^[.][.]?\z/ && -r "$rep1/$_" } readdir(DIR);
@liste = map{lc($_)} @liste;
closedir(DIR);
#
$rep="D:\\rapports_des_seuils\\UNIX";
$i = 0;
opendir(DIR, $rep) || die "Impossible de lire $rep : $!\n";
my @listeA = grep { not /^[.][.]?\z/ && -r "$rep/$_" } readdir(DIR);
@listeA = map{uc($_)} @listeA;
closedir(DIR);
$cpt = $#listeA;
#
for (my $j=0; $j <= $cpt; $j++) {
$rep="D:\\rapports_des_seuils\\UNIX\\$listeA[$j]";
opendir(DIR, $rep) || die "Impossible de lire $rep : $!\n";
my @listeU1 = grep { not /^[.][.]?\z/ && -r "$rep/$_" } readdir(DIR);
# ici il faudrait que @listeU1 puisse s'incrémenter tout seul i.e
# @listeU$j donc deviendrait @listeU1 puis @listeU2 et ainsi de suite..
# ou un autre moyen je ne sais plus...
@listeU1 = map{uc($_)} @listeU1;
closedir(DIR);
my @cpt1 = $#listeU1;
}
#
print "Content-type: text/html\n\n"; # Affichage de l'entête indispensable
print <<"FIN";
<html>
<head>
<title>Rapport des exceptions</title>
<script language="JavaScript">
var Html =""; // mettre la variable html à blanc
d = new Date();
document.write('<p align="right"><font color="black">'+d.toLocaleDateString()+','+d.toLocaleTimeString()+'</font></p>');
function afficherAutre() {
alert("allo");
alert(document.forms.form1.liste1A.value);
if (document.forms.form1.liste1A.value == "http://172.xx.xx.xxx/unix/Environnement") {
alert("Je trouve environnement");
}
for (j=0; j <= $cpt; j++) {
document.forms.form1.elements['liste1A'].options[document.forms.form1.elements['liste1A'].selectedIndex].value;
// alert("je passe dans le for " +j);
// <option value=http://172.xx.xx.xxx/unix/$listeA[$j]/$listeA[$j]> $listeA[$j]</option>
}
Html += '<b>Choix du rapport: <\/b><font size="4"><\/font>';
Html += ' <select name="dtrap">';
for (i=0; i <= 15; i++) {
Html += '<option value="http://172.xx.xx.xxx/unix/$listeA[$i]/$listeA[$i]"> $listeU1[$i]<\/option>';
}
Html += ' <\/select>';
//-- ici On écrit le résultat du html
document.write( Html);
}
</script>
</head>
FIN
print "<body>";
print "<img style= 'float: left' src='../bandeau1.jpg' alt='logo'><p align=center><font size=4>RAPPORT D\'ANALYSE DES EXCEPTIONS DES PFI</p></font>";
print "<p> </p>";
print "<p> </p>";
print "<hr>";
print "Le contenu du répertoire: $rep1<br><br>";
print "<b>Quel rapport voulez-vous voir ?</b><br>";
print "<form name='form1' method='post' action=''>";
print "<select name=liste1>";
for (my $j=0; $j <= $#liste; $j++) {
print "<option value=http://172.xx.xx.xxx/tous_unix/$liste[$j]> $liste[$j]</option>\n";
}
print "</select>";
print "<INPUT TYPE='button' VALUE='OK' onClick='location =
form1.liste1.options[form1.liste1.selectedIndex].value;'>";
#
print "<hr>";
print "Le contenu du répertoire: $rep<br><br>";
print "<b>Choisir votre environnement ?</b><br>";
print "<select name=liste1A onChange=afficherAutre()>";
for (my $j=0; $j <= $#listeA; $j++) {
print "<option value=http://172.27.96.172/unix/$listeA[$j]> $listeA[$j]</option>";
}
print "</select>";
print "</form>";
print "</body>\n";
print "</html>\n";
Merci !
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
3 août 2007 à 16:17
3 août 2007 à 16:17
Salut,
de passer la liste des 15 fichiers html dans mon javascript
et pourquoi n'utilises tu seulement perl?
comment tu te prends pour utiliser le script java?
Perl and Java
de passer la liste des 15 fichiers html dans mon javascript
et pourquoi n'utilises tu seulement perl?
comment tu te prends pour utiliser le script java?
Perl and Java
31 juil. 2007 à 19:15
Merci !
tu peux revoir mon programme et l'essayer en changeant de répertoire tout simplement i.e. le premier step tu crées un répertoire qui contient juste des répertoires (ex: 5 répertoires) et dans chacun des répertoires tu peux créer 3 ou 4 fichier texte ou html.
revoici le code:
#!/usr/bin/perl
#
$rep="H:\\rapports_des_seuils\\UNIX";
opendir(DIR, $rep) || die "Impossible de lire $rep : $!\n";
my @listeA = grep { not /^[.][.]?\z/ && -r "$rep/$_" } readdir(DIR);
@listeA = map{uc($_)} @listeA;
closedir(DIR);
$cpt = $#listeA;
#
for (my $j=0; $j <= $cpt; $j++) {
$rep="H:\\rapports_des_seuils\\UNIX\\$listeA[$j]";
opendir(DIR, $rep) || die "Impossible de lire $rep : $!\n";
my @listeU1 = grep { not /^[.][.]?\z/ && -r "$rep/$_" } readdir(DIR);
@listeU1 = map{uc($_)} @listeU1;
closedir(DIR);
$cpt1 = $#listeU1;
print "$listeU1[0]\n";
}