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 :

Problème de compilation script Perl


Sujet :

Langage Perl

  1. #1
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut Problème de compilation script Perl
    Bonjour à tous!

    Alors voilà, je viens de mettre en place une interface de helpdesk (Request Tracker -- RT pour les intimes) basé sur Perl.

    Je suis maintenant en train de tester différents plugins, dont le plugin TimeWorker http://wiki.bestpractical.com/view/TimeWorked, sensé afficher un rapport sur le temps passé sur chaque ticket.

    Lorsque je vais sur la page pour exécuter le script, voici le message d'erreur qui m'est retourné:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error during compilation of /opt/rt3/share/html/Tools/Reports/TimeWorked.html: Bareword found where operator expected at /opt/rt3/share/html/Tools/Reports/TimeWorked.html line 124, near "print '
    N'étant pas très bon développeur (et surtout n'ayant jamais touché au Perl! ), j'ai tenté une recherche sur google, mais je n'ai rien trouvé de concluant.

    Voici la ligne indiquée dans l'erreur (en cas de besoin, tous le code est disponible sur la page du plugin, ou bien demandez moi )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      print '<tr style="font-weight: bold;"><td>Total</td><td>',$uhash->{$user_id}->{total},'</td></tr>',
    Merci à vous!
    Cordialement,
    Anthony

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Par défaut
    essaye déja tout simplement de finir la ligne par un " ; " a la place d'une " , " et regarde ce qu'il te dit...

    Ensuite le print en lui même me parait bancal...
    tu peux nous donner l'exemple de ce qui doit être affiché ? histoire de savoir ce que tu veux afficher comme quote et ponctuation...

    Sinon, a première vue je pense que tu souhaitais cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print '<tr style="font-weight: bold;"><td>Total</td><td>'.$uhash.'->{'.$user_id.'}->{'.$total.'}</td></tr>';
    EDIT : pour du code, utilise les balises [CODE] et non [QUOTE]

  3. #3
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    Merci pour ta réponse

    Concernant le ; je ne pense pas qu'il faille en mettre un (j'ai essayé quand même, àa n'a pas marché), en effet, le code de la ligne suivante est en fait la suite de cette commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      print '<tr style="font-weight: bold;"><td>'Total'</td><td>',$uhash->{$user_id}->{total},'</td></tr>',
            '</tdata></table>',$/;
    }
    J'ai essayé aussi de "coller" le " '</tdata></table>',$/; " à la suite de ma ligne, sans succès.

    Pour ce que le code doit afficher, je ne sais pas vraiment en fait. Je sais qu'il est censé générer un rapport, mais c'est tout.

  4. #4
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Par défaut
    ok, c'est un peu plus clair déja avec la fin... oublie donc ma ligne precedente et remplace tes " , " par des " . " car ton code ressemble a une concatenation pour moi, mais en PERL l'operateur est " . "

  5. #5
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    J'ai essayé avec ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      print '<tr style="font-weight: bold;"><td>Total</td><td>'.$uhash->{$user_id}->{total}.'</td></tr>',
            '</tdata></table>',$/;
    Toujours la même erreur...

  6. #6
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Par défaut
    Si je comprend bien,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $uhash->{$user_id}->{total}
    est censé te retourner un résultat ? quel est-il ?
    Peut-tu éxecuter cela en dehors du print et le mettre dans une variable ?

    de plus, qu'est censé afficher la fin de ta ligne avec le ",$/" ?

  7. #7
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    Ce code n'est pas le mien et c'est la première fois que touche au Perl
    Je ne suis donc pas en mesure de te dire à quoi sert " ,$/ ".
    Et concernant l'exécution en dehors du print, est ce que cela marcherait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print $uhash->{$user_id}->{total};
    Concernant la variable "total", voici ce que j'ai trouvé dans le code source:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        # adjust the total time worked (for all queues)
        $uhash->{$user_id}->{total} += $ticket->TimeWorked;
    Donc apparemment, elle contient la durée total pour la résolution de tous les tickets.

  8. #8
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    La fonction print admet une liste de paramètre, qui sont alors concatenés avant l'affichage. L'utilisation de l'opérateur , au lieu de . est donc tout à fait légal.

    L'erreur indique qu'il y a un bareword dans la ligne, c'est à dire un mot qui n'est pas un mot-clé, et qui n'est ni un handle ni un symbole (un nom de variable précédé d'un sigil $, @, %, &, ...).
    Le bareword est ici en gras

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print '<tr style="font-weight: bold;"><td>'Total'</td><td>'
    Il est du au fait que tu n'as pas protégé les quotes simples (si elles doivent apparaitre dans le HTML).
    Pour cela, il peut-être utile d'utiliser l'opérateur q() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print q(<tr style="font-weight: bold;"><td>'Total'</td><td>)

  9. #9
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Par défaut
    ok...
    Bon, je vois deux choses à éssayer, et sinon j'ai pu trop d'idée...

    - La première, récuperer la variable total avant le print...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my $vartotal = $uhash->{$user_id}->{total};
    print '<tr style="font-weight: bold;"><td>Total</td><td>'.$vartotal.'</td></tr></tdata></table>',$/;
    - La deuxième, virer le ",$/" qui me semble parasite...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my $vartotal = $uhash->{$user_id}->{total};
    print '<tr style="font-weight: bold;"><td>Total</td><td>'.$vartotal.'</td></tr></tdata></table>';
    ou aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      print '<tr style="font-weight: bold;"><td>Total</td><td>'.$uhash->{$user_id}->{total}.'</td></tr></tdata></table>';
    Et pense à poster les messages d'erreur si il y en a... Car sinon je pourrais pas t'aider plus...

  10. #10
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    Bonjour Philou67430

    J'ai essayé ce que tu m'a dit, j'ai toujours le même type de message d'erreur:

    Error during compilation of /opt/rt3/share/html/Tools/Reports/TimeWorked.html: Bareword found where operator expected at /opt/rt3/share/html/Tools/Reports/TimeWorked.html line 124, near "print q(
    J'ai essayé de modifier les parenthèses:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      print q(<tr style="font-weight: bold;"><td>Total</td><td>',$uhash->{$user_id}->{total},'</td></tr>),
            '</tdata></table>',$/;
    Et toujours la même erreur.

  11. #11
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Tu n'as pas utilisé l'opérateur convenablement pour ton usage, car l'opérateur q() remplace les quotes simples, c'est à dire sans interpolation.
    Pour interpoler des variables il faudrait éventuellement utiliser l'opérateur qq().

    Cette ligne devrait être plus correcte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      print qq(<tr style="font-weight: bold;"><td>Total</td><td>'$uhash->{$user_id}->{total}'</td></tr></tdata></table>),$/;
    Au passage, j'ai vérifié que cette ligne compilait. Si tu as toujours l'erreur, il faudra alors que tu donnes le contexte autour de cette ligne, car le problème est sans doute ailleurs.

  12. #12
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    Ca ne marche toujours pas

    Voici la fonction complète:

    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
    foreach(keys(%{ $uhash })) {
      my $user_id = $_;
     
      next if ($uhash->{$user_id}->{total}        == 0);
      print '<h2>',$uhash->{$user_id}->{real_name},'</h2>';
      print '<table><tdata>',$/;
     
      foreach(keys(%{ $uhash->{$user_id}->{queues} })) {
     
        next if ($uhash->{$user_id}->{queues}->{$_} == 0);
     
        print '<tr>',
               '<td>',$_,'</td>',
               '<td>',$uhash->{$user_id}->{queues}->{$_},'</td>',
              '</tr>',$/;
      }
    print qq(<tr style="font-weight: bold;"><td>Total</td><td>'$uhash->{$user_id}->{total}'</td></tr></tdata></table>),$/;
    }
    Si vous voulez d'autres informations, n'hésitez pas à me demander

    Sinon encore merci de m'aider Michon et Philou

    EDIT : Pour rappel, voici le message d'erreur:

    Error during compilation of /opt/rt3/share/html/Tools/Reports/TimeWorked.html: Bareword found where operator expected at /opt/rt3/share/html/Tools/Reports/TimeWorked.html line 124, near "print qq(

  13. #13
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    J'ai testé ta portion de code avec une structure de donnée que j'ai créée, et je n'ai aucune erreur.
    Pourrais-tu soit :
    - fournir la liste de use utilisés dans le script
    - fournir le script complet en pièce jointe avec éventuellement les jeux de fichiers d'entrée pour le tester

    Pourrais-tu également indiquer la version perl que tu utilises ?

  14. #14
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Autre idée, remplace cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print qq(<tr style="font-weight: bold;"><td>Total</td><td>'$uhash->{$user_id}->{total}'</td></tr></tdata></table>),$/;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print '<tr style="font-weight: bold;"><td>Total</td><td>', $uhash->{$user_id}->{total}, '</td></tr></tdata></table>',$/;

  15. #15
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    Toujours la même erreur

  16. #16
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Peut-être pourrais-tu également répondre à mon message #13

  17. #17
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    Oups, désolé, je ne l'avais pas vu...

    Alors pour la version de Perl:

    This is perl, v5.10.0 built for x86_64-linux-gnu-thread-multi

    Qu'entend tu par les jeux de fichier d'entrée?
    Fichiers attachés Fichiers attachés

  18. #18
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Hum... je n'avais pas compris que le code perl n'était pas appelé directement par perl, mais intégré dans un méta-langage XML.

    Ca se complique, car je me vois mal installer RT.

    On va donc procéder autrement...
    Pourrais-tu mettre la ligne 124 en commentaire (# en début de ligne) et m'indiquer s'il donne une erreur en ligne 140 à 144 ?

  19. #19
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    Il m'affiche toujours la même erreur, on dirait qu'il ne prend pas la ligne pour un commentaire:

    Error during compilation of /opt/rt3/share/html/Tools/Reports/TimeWorked.html: Bareword found where operator expected at /opt/rt3/share/html/Tools/Reports/TimeWorked.html line 124, near "# print '
    J'ai essayé avec // , mais pareil:

    Error during compilation of /opt/rt3/share/html/Tools/Reports/TimeWorked.html: Bareword found where operator expected at /opt/rt3/share/html/Tools/Reports/TimeWorked.html line 124, near "// print '

  20. #20
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Essaye avec un commentaire XML : <!-- ... --> ?
    En tout cas, le problème se situe autour de RT, pas de perl.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/03/2012, 23h10
  2. Problème sqlplus et script Perl
    Par brunolekid dans le forum Linux
    Réponses: 1
    Dernier message: 28/12/2009, 10h49
  3. Compilation script perl
    Par Viduc dans le forum Programmation et administration système
    Réponses: 5
    Dernier message: 30/10/2009, 18h38
  4. compiler un script perl
    Par black_code dans le forum Langage
    Réponses: 9
    Dernier message: 03/09/2005, 16h30
  5. Problème execution script perl
    Par 00sebbe dans le forum Apache
    Réponses: 1
    Dernier message: 29/08/2005, 14h43

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