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

Langage Perl Discussion :

[langage] compiler un prog perl


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 26
    Points : 12
    Points
    12
    Par défaut [langage] compiler un prog perl
    bonjour,

    je suis sous linux red hat 9.0 et j'aurai aimer savoir comment compiler un programme perl qui s'apel hello.pl et qui se situe ds /tmp/hello.pl ...

    merci de votre aide

  2. #2
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Bonjour,

    Perl est un langage interprété. Il n'est donc pas nécessaire de passer par une phase de compilation pour utiliser les scripts perl.

    Plusieurs solutions sont disponibles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl /mon_rep/mon_script.pl
    marche à tous les coups

    Sinon, s'assurer que le script est bien avec les attributs "executable" (les x dans rwxr-xr-x quand on fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -l /mon_rep/mon_script.pl
    ), et ensuite l'invoquer simplement :
    J'allais oublier ...
    Il faut aussi que ton script commence bien par le shebang :
    Bonne continuation.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    merci bcp de ton aide

    j'arrive a lancer mon prog mais en faite il ne m'affiche rien comme valeur CPU , voici ce qu'il me repond :

    Charge Ã* 1 min 0.00
    Charge Ã* 5 min 0.00
    Charge Ã* 15 min 0.00

    car pour l'instant j'essaye d'afficher juste les la charge.....

    merci de m'aider

  4. #4
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    ... poste ton code ...

    Il a l'air de fonctionner, mais le problème semble logique ... BUG !!!!
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    voici les lignes de mon programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #! /usr/bin/perl -w
     
    use strict ;
     
    open LOAD, "</proc/loadavg";
    my&#40;$loadavg&#41;=<LOAD>;
    chomp $loadavg;
    close LOAD;
     
    my @charges = split &#40;" ", $loadavg&#41;;
     
    print "Charge à  1 min $charges&#91;0&#93;\n" ; 
    print "Charge à  5 min $charges&#91;1&#93;\n" ; 
    print "Charge à 15 min $charges&#91;2&#93;\n" ;
    comment puis-je faire pour voir la valeur de ces charges correctemt?!!

    merci infiniment...

  6. #6
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut


    Essaie avec ça (subtile modification) ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #! /usr/bin/perl -w
    use strict ;
     
    open LOAD, "</proc/loadavg" or die "Impossible d'acceder a loadavg" ;
    my&#40;$loadavg&#41;=<LOAD>;
    chomp $loadavg;
    close LOAD;
     
    my @charges = split &#40;" ", $loadavg&#41;;
     
    print "Charge a   1 min $charges&#91;0&#93;\n" ; 
    print "Charge a   5 min $charges&#91;1&#93;\n" ; 
    print "Charge a  15 min $charges&#91;2&#93;\n" ;
    Parce que chez moi, le code que tu fournis fonctionne impeccable Peut être parce que c'est celui que j'avais fourni dans un autre fil il y a quelques jours 8)

    Sur quel système fonctionnes-tu ? (OS, version/distribution, version de perl, ...)
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    merci bcp de votre aide ca fonctionne
    MERCI INFINNIMENT

  8. #8
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par Gaël Donat, sur un autre sujet
    Tu peux cliquer sur "Résolu" en bas si ton sujet a trouvé sa solution :-)
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    oups desoler

    en faite j'ai presque fini car voici mon dernier probleme, voici meminfo :

    total: used: free: shared: buffers: cached:
    Mem: 526200832 186093568 340107264 0 54358016 66412544
    Swap: 1069277184 0 1069277184
    MemTotal: 513868 kB

    et mon programme qui est ici :
    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
    #! /usr/bin/perl -w 
     
    use strict ; 
     
    # Recuperation du contenu du fichier 
    open LOAD, "</proc/meminfo" or die "Impossible d'acceder a memoire"; 
    my&#40;$meminfo&#41;=<LOAD>; 
    chomp $meminfo; 
    close LOAD; 
     
    # affiche les valeur de meminfo 
    my @charges = split &#40;" ", $meminfo&#41;; 
     
    # Traitement 
    print "taille de ma memoire $charges&#91;0&#93;\n" ; 
    print "taille de la memoire utiliser $charges&#91;1&#93;\n" ; 
    print "taille de la memoire libre $charges&#91;2&#93;\n" ; 
    print "\n" ;

    me repond ceci :

    taille de ma memoire total:
    taille de la memoire utiliser used:
    taille de la memoire libre free:


    en faite il m'affiche la premiere or moi je veux le deuxieme....

    ca doit etre simple mais je ne voi pa trop ..

    merci

  10. #10
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my &#40;$meminfo&#41;=<LOAD>
    Tu lis tout le fichier d'un coup, mais tu ne garde que la première ligne dans $meminfo.

    Il te faut lire la première ligne dans une variable (et non une liste comme c'est le cas ici avec les parenthèses), puis lire la seconde ligne dans $meminfo.

    Ensuite, une fois que tu as la ligne souhaitée dans $meminfo, tu peux récupérer les valeurs des colonnes.

    Cependant, je te recommande de regarder attentivement ta description du pseudo-fichier /proc/meminfo, car les infos qui t'intéressent ne sont absolument pas dans les colonnes 0, 1 et 2 que tu utilises.

    Et aussi :
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    bonjour ,

    je vous ecrit car j'ai essayer toutes les solutions possble ce w-e pour lire ces maudits chiffres mais je n'y suis pa arrive alor j'en suis retombee au point de depart c'est a dire que j'ai toujours la reponse suivante :

    taille de ma memoire total:
    taille de la memoire utiliser used:
    taille de la memoire libre free:

    et le programme est le meme ..
    mais il ne m'affiche pas le memoire total, utliser et libre...

    total: used: free: shared: buffers: cached:
    Mem: 261390336 210886656 50503680 0 56795136 84643840
    Swap: 536731648 0 536731648
    MemTotal: 255264 kB
    MemFree: 49320 kB
    MemShared: 0 kB
    Buffers: 55464 kB

    moije voudrais qu'il m'affiche ceci pour
    memoire total : 261390336
    memoire utiliser : 210886656
    memoire libre : 50503680


    je suis vraiment desoler mais j'ai deja esssyer diffrente solution

    merci beaucoup.....

  12. #12
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Ainsi que je te l'ai déjà signalé, il ne faut pas lire tout ton fichier d'un coup, dans une liste dont on ne garde que le premier élément (la première ligne).
    C'est pourtant ce que signifie la variable seule entre parenthèses dans l'affectation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my &#40;$meminfo&#41;=<LOAD>
    Il te faut donc, soit traiter ligne par ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $ligne_oubliee=<LOAD>; my $meminfo=<LOAD>;
    soit traiter sous forme de liste en négligeant la première ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my &#40;$ligne_oubliee,$meminfo&#41;=<LOAD>;
    Ensuite, après ton split de $meminfo dans $charges, il faut faire attention aux champs que tu utilise. Ce n'est en aucun cas les champs 0, 1, 2 de charges, mais, si l'on se réfère au format de /proc/meminfo, il s'agit des champs 1, 2 et 3.

    A adapter, donc ...

    Tout est dans les spécifs ...
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  13. #13
    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
    un idiome pratique pour ignorer des valeurs dans une affectation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my &#40;undef, $seconde_valeur, undef, $quatrieme_valeur&#41; = @tableau ;


    --
    Jedaï

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    salut je vien de finir mon programme qui marche parfaitement (meme sous crontab) ... avec votre aide..

    Il marche mais ce que je veux faire c'est faire 2 seuilles (seuille1 et seuille2)

    seuille1 serait 70 % de $charge[1]
    seuille2 serait 90 % de $charge[1]


    et donc en general
    si seuille1 >= 70% de $charge[1]
    afficher ("CRITICAL");
    si seuille2 >= 90% de $charge[1]
    afficher ("DANGER!!!!!!!!!");

    je vous soumet mon propre programme:


    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
    #! /usr/bin/perl -w
     
    use strict ;
     
    open LOAD, "</proc/meminfo" or die "Impossible d'acceder a memoire";
    my $ligne_oubliee=<LOAD>;
    my $meminfo=<LOAD>;
    chomp $meminfo;
    close LOAD;
     
    # affiche les valeur de meminfo
    my @charges = split &#40;" ", $meminfo&#41;;
     
    # Traitement
    print "taille de ma memoire $charges&#91;1&#93;\n" ;
    print "taille de la memoire utiliser $charges&#91;2&#93;\n" ;
    print "taille de la memoire libre $charges&#91;3&#93;\n" ;
    print "\n" ;

    merci enormement

  15. #15
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if &#40;$charge&#91;2&#93; >= &#40;0.7 * $charge&#91;1&#93;&#41; &#123;
      print "Zone Orange\n";
    &#125;
    Et je te laisse trouver tout seul pour la zone Rouge (mais je t'aide un peu ... un else ajouté au if, avec un autre if bien senti, à l'intérieur ...)

    [Edit]
    Et comme l'a fort justement indiqué jedaï, tu peux avantageusement remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $ligne_oubliee=<LOAD>;
    my $meminfo=<LOAD>;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my &#40;undef, $meminfo&#41;=<LOAD>;
    [/Edit]
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  16. #16
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 851
    Points : 4 743
    Points
    4 743
    Par défaut
    Les balises codes mike21, crisse de tabernouche !!!!!!

    @ ++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    salut,

    je vien (grace a votre aide) de faire un programme qui est le suivant :

    #! /usr/bin/perl -w

    use strict ;
    open LOAD, "</proc/meminfo" or die "Impossible d'acceder a memoire";
    my (undef, $meminfo)=<LOAD>;
    chomp $meminfo;
    close LOAD;

    my @charges = split (" ", $meminfo);

    print "taille de ma memoire total $charges[1]\n" ;
    print "taille de la memoire utiliser $charges[2]\n" ;
    print "taille de la memoire libre $charges[3]\n" ;
    print "\n" ;

    if ($charges[2] >= (0.7 * $charges[1])) {
    open FILE, '>/tmp/test_mij' or die "/tmp/test_mij : $!\n";
    print FILE "CRITICAL!!!\n";
    close FILE;
    }
    else {
    if ($charges[2] >= (0.9 * $charges[1])) {
    open FILE, '>/tmp/test_mij' or die "/tmp/test_mij : $!\n";
    print FILE "MEMEOIRE INSUFFISANTE ,DANGER !!!\n";
    close FILE;
    }
    }

    mais ce programme m'affiche toujours CRITICAL mais ce n'est pas ce que je veux, en faite je voulais qu'il affiche CRITICAL des que le seuil attein 70 % et qu'il envoi le 2ieme mess des qu'il atteint 90 % de la mem total..

    merci

  18. #18
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Evidemment, à force de lire des bétises, je finis par en écrire, moi-même .

    La structure algorithmique de ton test doit être une des suivantes, qui sont équivalentes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Si charge > seuil2
       Alors 
          Afficher &#40;Alerte Rouge&#41;
       Sinon 
          Si charge > seuil1
             Alors Afficher &#40;Alerte Orange&#41;
          Finsi
    Finsi
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Si charge > seuil1
       Alors 
          Si charge > seuil2
             Alors Afficher &#40;Alerte Rouge&#41;
             Sinon Afficher &#40;Alerte Orange&#41;
          Finsi
    Finsi
    A toi de recoder ça, maintenant 8)
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    voici ce que j'ai fait :

    if ($charges[2] >= (0.7 * $charges[1])) {
    print "CRITICAL!!!\n";
    }
    else {
    if ($charges[2] >= (0.9 * $charges[1])) {
    print "MEMEOIRE INSUFFISANTE ,DANGER !!!\n";
    }
    }


    pourtant j'ai bien choisi la premiere solution mais ca ne fonctionne pas!!

    je suis desole mais ca ne marche pas..

  20. #20
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Parce que tu as inversé les deux tests de seuil !!!

    Regarde bien mon premier algorithme. On teste d'abord par rapport au seuil2, soit la valeur la plus élevée, pour afficher l'alerte rouge, et ensuite par rapport au seuil2 (tes 70%) ...

    Voila l'erreur

    [Edit]
    Et aussi ...

    nontidju !!!!
    [/edit]
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. compiler un prog open gl
    Par bobbyf dans le forum OpenGL
    Réponses: 2
    Dernier message: 11/03/2004, 09h22
  2. [langage] chaine de caractere perl
    Par oli2a dans le forum Langage
    Réponses: 4
    Dernier message: 03/09/2003, 16h56
  3. [langage] Pb avec Active perl :s
    Par Cetras dans le forum Langage
    Réponses: 2
    Dernier message: 02/09/2003, 14h28
  4. [langage] Commande Unix en Perl
    Par totox17 dans le forum Langage
    Réponses: 3
    Dernier message: 20/11/2002, 11h59
  5. [TP]Compiler un prog sans entrer dans TP7
    Par poppels dans le forum Turbo Pascal
    Réponses: 11
    Dernier message: 23/10/2002, 19h46

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