Posez votre question Signaler

Help Perl

clement. 287Messages postés 24 septembre 2007Date d'inscription - Dernière réponse le 17 sept. 2008 à 08:45
Bonjour,
Je voudrais afficher le contenu d'un fichier sous une page web en langage Perl.
Il ne s'agit pas d'afficher simplement et betement le contenu. ça j'y suis arrivé.
Mais de trier dans celui-ci...
est ce que quelqu'un pourrait m'aider ?
Lire la suite 

Help Perl »

Suggestions
27 réponses
Réponse
-1
moins plus
Bonjour,

Qu'entend tu par trier le contenu?
peux tu mettre ce que tu as deja coder pour l'affichage?
Ajouter un commentaire
Réponse
-1
moins plus
Pour lire mon ficher et l'afficher sur ma page web mon code est tout simple :

print "Content-type: text/html\n\n"; #Pour pouvoir être lu sur une page Web (HTML)

@ARGV = ("monfichier"); #Lire le fichier voulu

while (<>)
{
print;
}



le fichier en question c'est celui là !

lmstat - Copyright (C) 1989-2001 Globetrotter Software, Inc.
Flexible License Manager status on Fri 9/12/2008 11:26

License server status: 27000@serveur
License file(s) on chemin_serveur

nom_serveur: license server

Vendor daemon status (on serveur):

Version: UP v7.2

Feature usage info:

Users of ***: (Total of 2 licenses available)

Users of ***: (Total of 2 licenses available)

Users of ***: (Total of 2 licenses available)

Users of ***: (Total of 2 licenses available)

Users of ***: (Total of 1 license available)

Users of ***: (Total of 1 license available)

Users of ***: (Total of 2 licenses available)

Users of ***: (Total of 2 licenses available)

Users of ***: (Total of 2 licenses available)

Users of ***: (Total of 2 licenses available)

Users of ***: (Total of 2 licenses available)

Donc ce contenu arrive dans ma page web mais pas de cette forme là ...
Ce que je veux c'est realisé un tableau ou sera mis en colonne :
- le nom de la licence (représenté par les ***)
- le nombre de licences disponibles

Lorsqu'un utilisateur utilise une de ses licences sa rajoute des informations qu'il faut stockés dans un second tableau :

- le login de la personne qui utilise cette licence( dans l'exemple il n'y a personne a ce moment)
- le nom de la machine
- la date de début d'utilisation.

voila... pour moi c'est vraiment pas simple....
merci de l'aide
Ajouter un commentaire
Réponse
-1
moins plus
donc
je pense que tu connais la commande "split" en perl (separateur de champ)
il faut que tu fasse un split sur chaque ligne.
#admettons que tu enregistre la ligne de ton fichier dans $ligne

@C_ligne = split " ",$ligne;   #ici tu récupère les champs de la ligne qui sont séparés par un espace 

#maintenant tu veux traiter les lignes où sont contenus les infos sur la licence.

for  $i (0..@C_ligne)
          if ( $C_ligne eq "Users")
          {
                      $nom_licence[$i] = $C_ligne[2];     #attention cela marche que si le nom de la licence est en seul mot
                      $nbr_licence[$i] = $C_ligne[6] ;   # j'ai un doute sur le numero 6 , c ptet 7
          }
}

#il faut que tu lise ton fichier ligne par ligne pour cela


Ajouter un commentaire
Réponse
-1
moins plus
En effet je connais la commande split mais je savais pas trop comment l'utiliser.

Donc ca donne ça :



print "Content-type: text/html\n\n"; #Pour pouvoir être lu sur une page Web (HTML)

@ARGV = ("monfichier"); #Lire le fichier voulu

while (<>)
{
@C_ligne = split " ",$ligne;
for $i (0..@C_ligne)
if ( $C_ligne eq "Users")
{
$nom_licence[$i] = $C_ligne[2]; #Le nom des licences est bien en un seul mot (ex : une_licence )
$nbr_licence[$i] = $C_ligne[6] ; # là je comprends pas bien a quoi correspond le 6 ou 7 ? ca représente le 7eme ou 8eme mot de la ligne ?

print; # enfin le programme est t-il correcte ?
} }
Ajouter un commentaire
Réponse
-1
moins plus
dnas ton cas là le programme ne va reconnaitre la variable $ligne.
il faudrait faire

print "Content-type: text/html\n\n"; #Pour pouvoir être lu sur une page Web (HTML)

open (FIC,"<Ton_fichier");
while ($ligne = <FIC>)
{
           @C_ligne = split " ",$ligne;
            for $i (0..@C_ligne)
            {
                            if ( $C_ligne eq "Users")
                            {
                                     $nom_licence[$i] = $C_ligne[2]; #Le nom des licences est bien en un seul mot (ex : une_licence )
                                     $nbr_licence[$i] = $C_ligne[6] ; # le 6 indique le numero du champ que l'on veut récupérer en sachant que le premier champ est 0 , donc 6 correspond au 7e champ.
                           }
             }
}

print; 

après à toi de restrucutrer les données enregistrée pour savoir comment tu les réécris
Ajouter un commentaire
Réponse
-1
moins plus
je viens de constater une belle boulette dans mon "for"
je te demande de m'excuser d'ailleurs.
procede autrement.

print "Content-type: text/html\n\n"; #Pour pouvoir être lu sur une page Web (HTML)

$i = 0;
open (FIC,"<Ton_fichier");
while ($ligne = <FIC>)
{
           @C_ligne = split " ",$ligne;
           
            if ( $C_ligne eq "Users")
             {
                                     $nom_licence[$i] = $C_ligne[2]; #Le nom des licences est bien en un seul mot (ex : une_licence )
                                     $nbr_licence[$i] = $C_ligne[6] ; # le 6 indique le numero du champ que l'on veut récupérer en sachant que le premier champ est 0 , donc 6 correspond au 7e champ.
                                       $i += 1;
                }
             
}
#la c'est correct et moins encombrant
print; 

Ajouter un commentaire
Réponse
-1
moins plus
d'accord mais c'est pas plutot avec des "my" pour les varaibles ?
Ajouter un commentaire
Réponse
-1
moins plus
ce n'est pas obligatoire , c'est selon l'utilisation que tu en fais.
tu peux mettre
my $i = 0;
si ça peut te soulager :-)
Ajouter un commentaire
Réponse
-1
moins plus
Moi personnellement si ca a pas d'importance je m'en fiche lol
mais le petit malin m'indique plein plein d'erreurs ^^ dans le error.log

je mets juste les éléments concernés ;)
(Did you mean &i instead?)
Variable "$i" is not imported at /var/www/cgi-bin/script line 32.
(Did you mean &i instead?)
Variable "$i" is not imported at /var/www/cgi-bin/script line 33.,
(Did you mean &i instead?)
Variable "$i" is not imported at /var/www/cgi-bin/script line 34.
(Did you mean &i instead?)
Global symbol "$i" requires explicit package name at /var/www/cgi-bin/script line 24., Global symbol "$ligne" requires explicit package name at /var/www/cgi-bin/script line 26., Global symbol "@C_ligne" requires explicit package name at /var/www/cgi-bin/script line 28.
Global symbol "$ligne" requires explicit package name at /var/www/cgi-bin/script line 28., Global symbol "$C_ligne" requires explicit package name at /var/www/cgi-bin/script line 30
Global symbol "@nom_licence" requires explicit package name at /var/www/cgi-bin/script line 32
Global symbol "$i" requires explicit package name at /var/www/cgi-bin/scriptline 32., Global symbol "@C_ligne" requires explicit package name at /var/www/cgi-bin/script line 32
Global symbol "@nbr_licence" requires explicit package name at /var/www/cgi-bin/script line 33
Global symbol "$i" requires explicit package name at /var/www/cgi-bin/script line 33., Global symbol "@C_ligne" requires explicit package name at /var/www/cgi-bin/scriptline 33
Global symbol "$i" requires explicit package name at /var/www/cgi-bin/script line 34., : Execution of /var/www/cgi-bin/script aborted due to compilation errors.


Chouette pas vrai ^^ ? j'ai l'impression qu'il aime pas trop les nouvelles variables...
J'ai une autre question.. le open est-il nécessaire ? j'ai déjà essayé de l'utiliser et a chaque fois il me mets une erreur du style "readline () ..."
pas cette fois parce que ya le reste mais elle viendra apres je pense.
Ajouter un commentaire
Réponse
-1
moins plus
Alors là j'avoue....
essaie en déclarant toutes les variables que l'on utilise avec my .
en faisant attention de bien mettre @ pour les tabelaux .
Ajouter un commentaire
Réponse
-1
moins plus
Je sens que mon Perl est complement à la masse....
j'arrive à rien faire avec ce truc là... a par afficher "coucou" ou un tableau mais sans rien a l'intérieur
et quand j'essaye de faire un rsh... c'est même pas ma peine d'y penser...
Ajouter un commentaire
Réponse
-1
moins plus
tu as bien écris cett ligne là : #!/usr/bin/perl
sans faute?
Ajouter un commentaire
Réponse
-1
moins plus
Salut,
les informations que tu veux stocker dans le deuxième tableau se trouvent où?

- le login de la personne qui utilise cette licence( dans l'exemple il n'y a personne a ce moment)
- le nom de la machine
- la date de début d'utilisation.
Ajouter un commentaire
Réponse
-1
moins plus
#!/usr/bin/perl -w

moi j'ai écris ca,
Ajouter un commentaire
Réponse
-1
moins plus
teste en virant le -w....
lami20j est calé en perl ...
je pense qu'il te filera un coup de main aussi
Ajouter un commentaire
Réponse
-1
moins plus
Les autres éléments losqu'un utiliseur prends une licence se rajoutens dans ce meme fichier.

c'est a dire que ca donne ca a la fin j'ai pu trouver un exemple :

Users of ***: (Total of 2 licenses available)

"***" v12.01, vendor:
floating license

machine serveur /dev/tty (v1.0) (serveur/27000 202), start Tue 7/15 10:13

voila...
Ajouter un commentaire
Réponse
-1
moins plus
merci en tout ca a toi tisba972,
lami20j va avoir du boulot avec moi lol^^
Ajouter un commentaire
Réponse
-1
moins plus
Re,

par exemple (attention, ce n'est pas encore un script CGI) pour afficher les licences et le nombre de licences
Dans mon exemple j'utilise le handle DATA et pas un fichier. Mais ce n'est qu'un exemple ;-)
#!/usr/bin/perl
use strict;use warnings;

while (<DATA>){
  next unless /^Users/;
  print "$1 : $2 licence(s)\n" if /of\s*(.*):.*of\s*(\d+)\s+.*/;
}
__END__
lmstat - Copyright (C) 1989-2001 Globetrotter Software, Inc.
Flexible License Manager status on Fri 9/12/2008 11:26

License server status: 27000@serveur
License file(s) on chemin_serveur

nom_serveur: license server

Vendor daemon status (on serveur):

Version: UP v7.2

Feature usage info:

Users of ***: (Total of 2 licenses available)

Users of ***: (Total of 2 licenses available)

Users of ***: (Total of 2 licenses available)

Users of ***: (Total of 2 licenses available)

Users of ***: (Total of 1 license available)

Users of ***: (Total of 1 license available)

Users of ***: (Total of 2 licenses available)

Users of ***: (Total of 2 licenses available)

Users of ***: (Total of 2 licenses available)

Users of ***: (Total of 2 licenses available)

Users of ***: (Total of 2 licenses available)
lami20j@debian:~/trash$ perl licence.pl
*** : 2 licence(s)
*** : 2 licence(s)
*** : 2 licence(s)
*** : 2 licence(s)
*** : 1 licence(s)
*** : 1 licence(s)
*** : 2 licence(s)
*** : 2 licence(s)
*** : 2 licence(s)
*** : 2 licence(s)
*** : 2 licence(s)
Ajouter un commentaire
Réponse
-1
moins plus
je n'aurais qu'un mot... heu...:)

qui fait quoi ? j'ai pas tout suivi... habituellement je comprends mais là c'est tout confus..
Ajouter un commentaire
Réponse
-1
moins plus
Re,

essayons de faire simple

Tu donnes le fichier que tu as en entrée et tu affiches exactement ce que tu veux obtenir.
En bref, un exemple concret. Le plus important c'est de comprendre ce que tu veux obtenir. Pour le reste on verra ;-)

clement regarde tes MP
Ajouter un commentaire
Ce document intitulé « Help Perl » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook
Help Perl - page 2