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] erreurs utilisation tableaux 2 dimensions


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 16
    Points : 11
    Points
    11
    Par défaut [langage] erreurs utilisation tableaux 2 dimensions
    bonjour,
    jsuis un pur debutant et je pense que ma question va paraitre con a plus d'une personne... en fait je ne maitrise pas les tableaux a deux dimensions en Perl... Ca me fait d erreurs bizarres comme lorske je commence une boucle a 0, g une erreur m'indiquant que 0 est une chaine de caractere alors que ce n'en est pas une...
    bref si qq'1 pouvait m'expliker comment creer un tableau a deux dimensions, comment l'initialiser et l'utiliser, ce serait magnifik.. vous me direz ur d'aller sur le net, mais les liens que g trouve ne sont pas vraiment geniaux pour les tableaux a deux dimensions...

    sinon g une erreur que je ne comprends pas et ki q un rapport avec un tableau bien sur
    en fait j'essaie de faire une comparaison entre deux valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bestellungen->[$i][4] == prID->[$k]
    en accedant a prID de cette maniere j'obtiens l'erreur suivante:
    Can't use bareword ("prID") as an ARRAY ref while "strict refs" in use at ./Saveregina.pl line 165.
    si j'accede a mon tableau de la maniere suivante: prID[$k], j'obtiens cette erreur
    syntax error at ./Saveregina.pl line 156, near "prID["

    peut etre ke c erreurs viennent de l'initialisation de mon tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for ($i=0;$i<=10;$i++) {    #la c pour le fun....
        $prID[$i]=0;
    }
     
    for($k = 1; $k< $nb; $k++){
    $prID[$k] = $produktID->[$k][0];
    }
    bref je cale pas.. Si vous pouvez m'expliker comment ca marche, ce serait magnifik parce ke mon feeling semble pas trop fonctionner avec le perl

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    juste un ptit exemple pour mon erreur avec le "0"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for($i=0; $i<$nbProdukt; $i++)
    {
        $count[$i][0] = 0;
        $count[$i][1] = 0;
        $count[$i][2] = 0;
        $count[$i][3] = 0;
        $count[$i][4] = 0;
        $count[$i][5] = $ProdukteName->[$i][1];
    }
    et la g l'erreur suivante :
    Can't use string ("0") as an ARRAY ref while "strict refs" in use at ./Saveregina.pl line 128.

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 584
    Points : 2 031
    Points
    2 031
    Par défaut
    essaie d'accéder à un élément de ton tableau via $prID[$k] et non prID[$k]

    En Perl, toute variable doit être préfixée de son type : $ pour scalaire, @ pour liste/tableau et % pour hash/tableau associatif

    pour Perl, prID[$k] n'étant pas préfixé, ça ne lui absolument rien, voilà pourquoi il beugle sur ton écran

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    ouais ca c bien vu... la honte mdr
    mais par contre ca resout pas encore mon probleme avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Can't use string ("0") as an ARRAY ref while "strict refs" in use at ./Saveregina.pl line 128.
    en fait c ptet parce ke mon tableau est initialise avec fetchall_arrayref();
    en fait je fais tout ca
    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
     
     #ProduktNameOhneBC 
    my $Produkte = $dbh->prepare("SELECT count(*), Name_Gruppiert_ohne_BC, Produkt_ID from produkte_gruppieren group by Name_Gruppiert_ohne_BC");
    $Produkte->execute();
    my $ProdukteName = $Produkte->fetchall_arrayref();
    my $nbProdukt = $Produkte->rows();
     
    my @count = $ProdukteName;
    for($i=0; $i<$nbProdukt; $i++)
    {
        $count[$i][0] = 0;
        $count[$i][1] = 0;
        $count[$i][2] = 0;
        $count[$i][3] = 0;
        $count[$i][4] = 0;
        $count[$i][5] = $ProdukteName->[$i][1];
    }
    et j'obtiens l'erreur si dessus..
    Merci pour le $, g vraiment pas l'habitude faire du Perl mdr

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 584
    Points : 2 031
    Points
    2 031
    Par défaut
    quelle est la ligne n° 128 dans ton script ? Ca m'aiderait pour savoir à quel endroit le script refuse de compiler

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $count[$i][5] = $ProdukteName->[$i][1];
    c celle la... desole j'avais oublie de le preciser

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 584
    Points : 2 031
    Points
    2 031
    Par défaut
    Citation Envoyé par drosof
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $count[$i][5] = $ProdukteName->[$i][1];
    c celle la... desole j'avais oublie de le preciser
    Je m'en doutais un peu mais je voulais être sûr.

    M'est avis qu'il y a un problème avec une ligne plus haut dans ton script, la ligne # 117 si je sais encore compter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $ProdukteName = $Produkte->fetchall_arrayref();
    Soit la méthode fetchall_arrayref est mal employée ou bien qu'elle retourne quelque chose d'inattendu.

    Essaie ceci pour voir (j'espère que ma syntaxe est bonne) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    eval { my $ProdukteName = $Produkte->fetchall_arrayref(); }
    if ($@)
    {
        print "eval de \$ProdukteName a retourné une erreur : $@\n";
        exit();
    }
    peut être y a-t-il un ; après l'accolade fermante du eval, je suis pas sûr

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    alors pour l'instant avec ou sans ";" j'obtiens ca
    syntax error at ./Saveregina.pl line 132, near ")
    {"
    syntax error at ./Saveregina.pl line 135, near "}"
    132 -> accolade apres if(@)
    135 -> accolade fermante

  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 584
    Points : 2 031
    Points
    2 031
    Par défaut
    laisse béton, je m'a gourré pour l'emplacement du ;, la ligne exacte à mettre dans ton script pour le eval est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval { my $ProdukteName = $Produkte->fetchall_arrayref(); } ;
    faut juste que tu rajoute le ; à la fin, j'aurais dû regarder perlfunc avant de te répondre

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    jpas de soucis mdr... sans toi je serais trop trop mal barre alors m avec qq erreurs, je prends...
    alors bon c marrant parce que ca fait pas d'erreur...
    g le code suivant :

    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
    19
    20
    21
    22
     
    my $Produkte = $dbh->prepare("SELECT count(*), Name_Gruppiert_ohne_BC, Produkt_ID from produkte_gruppieren group by Name_Gruppiert_ohne_BC");
    $Produkte->execute();
    my $ProdukteName;
    my $nbProdukt = $Produkte->rows();
     
    #my @count = $ProdukteName;
    #for($i=0; $i<$nbProdukt; $i++)
    #{
    #   $count[$i][0] = 0;
    #   $count[$i][1] = 0;
    #   $count[$i][2] = 0;
    #   $count[$i][3] = 0;
    #   $count[$i][4] = 0;
    #   $count[$i][5] = $ProdukteName->[$i][1];
    #}  
    eval { $ProdukteName = $Produkte->fetchall_arrayref(); };
    if ($@)
    {
        print "eval de \$ProdukteName a retourné une erreur : $@\n";
        exit();
    }
    et il m'affiche les 8 tables que je veux... donc l'erreur est pas a ce niveau...
    ce serait pas tout simplement a cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @count = $ProdukteName;
    c ici que je declare mon tableau donc ptet kil m pas kon fasse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $count[$i][5] = $ProdukteName->[$i][1];
    quand l'indice vaut 0 (a partir de 1 ca fonctionne mais alors je perds la premiere valeur...)

  11. #11
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    putain jdeviens balaise mdr...
    fallait juste que je change ca....
    au lieu de ma declaration precedente...

    encore merci pour ton aide... sans toi j'aurais surement cherche durant d heures... ct sympa.. merci encore

  12. #12
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 584
    Points : 2 031
    Points
    2 031
    Par défaut
    Citation Envoyé par drosof
    encore merci pour ton aide... sans toi j'aurais surement cherche durant d heures... ct sympa.. merci encore
    ben tu sais, j'ai rien fait finalement mdr !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/12/2013, 17h17
  2. [langage] Erreur incomprehensible!!!!!
    Par sali dans le forum Langage
    Réponses: 4
    Dernier message: 08/05/2004, 20h58
  3. [langage] Comparaison de tableaux
    Par WetzlarMan dans le forum Langage
    Réponses: 2
    Dernier message: 22/04/2004, 14h08
  4. Tableaux à plusieurs dimensions
    Par Diabolik dans le forum Assembleur
    Réponses: 3
    Dernier message: 08/12/2003, 12h15
  5. Réponses: 6
    Dernier message: 04/04/2003, 15h28

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