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 :

declaration de variable


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Par défaut declaration de variable
    Je déclare une variable
    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 (@Tableau,$SqlUser,$PassWord,$Machine,$DataServer,$UneBase,$DirSql);
     
    ##celle-ci est saisi directement par l'utilisateur et intégrer dans un tableau pour ensuite etre géré dans mon programe
     
    @Tableau = (@ARGV);
    #print "@Tableau\n";
     
    	if ( $Tableau[0] eq "-u" && $Tableau[2] eq "-p" && $Tableau[4] eq "-h" && $Tableau[6] eq "-d" && $Tableau[8] eq "-b" && $Tableau[10] eq "-i") {
    		$SqlUser=$Tableau[1];
    		$PassWord=$Tableau[3];
    		$Machine=$Tableau[5];
    		$DataServer=$Tableau[7];
    		$UneBase=$Tableau[9];
    		$DirSql=$Tableau[11];	
    	}
    	else
    	{
    	print "Erreur d'utilisation parametre\n";
    	fct_what;
    	exit -1;
    	}
    Cette variable saisie par le user, ressemble à cela : c:\user\titi\script.sql

    lorsque je fais un print de ${DirSql}, j'ai l'erreur suivante:

    Can't use string (" c:\user\titi\"...) as a SCALAR ref while "strict refs" in use at c:\user\programme.pl line 111.

    Merci pour votre aide

  2. #2
    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
    Il faut que tu nous montres le code "exact" où tu fais appel à cette variable (ligne 111 de c:\user\programme.pl). Tu as probablement écris un double déréférencement, comme ${$DirSql}.

  3. #3
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Difficile de t'aider si tu ne montres pas le bout de code qui provoque l'erreur.

    A tout hasard, si tu fais un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print ${DirSql} ...
    essaie plutôt ceci:


  4. #4
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Par défaut
    Bonjour,

    En effet, j'ai résolu mon problème.
    Cependant si mon utilisateurs déclare dans sa variable :
    -i C:\test\repertoire40\toto.sql
    Et don que ma variable aura donc l'affectation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    my $DirSql1="C:\test\repertoire40\toto.sql"
    # Or si je fais un print de cette variable
     
    print "${DirSql1]
    j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Unrecognized escape \t passed through at 
    Useless use of \r at ....
    Par contre si je mets des "/" à la place des "\", il me l'interpréte correctement.

    Comment faire ?

    Merci pour votre aide.

  5. #5
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut

    Le patient: "Docteur, quand je fais cela, ça fait mal."
    Le docteur: "Eh bien, ne le faites pas."
    Autrement dit, utilise des "/", pas des "\".

    Bon, si tu as vraiment besoin d'utiliser des "\", alors il faut les doubler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $DirSql1="C:\\test\\repertoire40\\toto.sql";
    Jette aussi un coup d’œil a la fonction quotemeta, qui s'occupe d'ajouter les barres obliques inverses nécessaires. Il est fort possible qu'elle suffise à résoudre ton problème.

  6. #6
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Par défaut
    le probleme de doubler : c'est l'utilisateur qui saisie la ligne ou est situé le fichier

Discussions similaires

  1. Declarer une variable d'environement
    Par shaun_the_sheep dans le forum Linux
    Réponses: 2
    Dernier message: 19/10/2005, 12h06
  2. Réponses: 6
    Dernier message: 23/09/2005, 12h54
  3. Problème déclaration de variable dans un package
    Par LE NEINDRE dans le forum Modules
    Réponses: 3
    Dernier message: 23/08/2005, 18h26
  4. Comment déclarer une variable globale
    Par davkick dans le forum C
    Réponses: 13
    Dernier message: 20/05/2005, 18h50
  5. declarer une variable dans le query analyzer
    Par graphicsxp dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 29/03/2005, 11h26

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