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 :

Gestion des erreurs avec "or" (die)


Sujet :

Langage Perl

  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 53
    Par défaut Gestion des erreurs avec "or" (die)
    Bonjour,
    Je suis en train de créer un petit script SFTP en Perl.

    Je fais différents traitements de suivi de mon script,
    J'envoie mon fichier,
    Je vérifie que l'envoie s'est bien déroulé,
    Je (re) fais des traitements divers.

    J'ai un problème sur le 3e point qui consiste à savoir si l'envoie s'est bien passé.

    Voici mon code :
    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
     
    [...] ouverture de la connexion
     
    #envoie du fichier
     
    if ( $sftp->put("$FICH","$REP_DEST/$FICH") != 1 ) { 
    	#écriture dans le fichier de log que l'envoie s'est mal passé (appel d'une fct LOG)
    	$STAT_XRF{"$FICH"} = "KO" ;
    } else {
     
    	# Check files are transmitted
    	$handle = $sftp->do_open("$REP_DEST/$FICH");
    	print "handle...$handle ...\n";
    	if ( undef ) {
    		#Ecriture dans le log qu'il y a eu une erreur lors de la verification (appel d'une fct LOG)
    		$STAT_XRF{"$FICH"} = "KO" 
    	} else {
    		# Ecriture dans le log que tout c'est bien déroulé (appel d'une fct LOG)
    		$NB_XRF{"$FICH"} = "OK" ;
    	}
    }
    $handle ne renvoie rien (dans mon print) et j'ai le message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Couldn't get handle: No such file or directory at ./cloner_sftp.pl line 195
    Pourtant si je ne transmet pas le fichier (donc que je commente le code plus haut) je ne rentre pas dans la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ( undef ) {
    	#Ecriture dans le log qu'il y a eu une erreur lors de la verification 
    	$STAT_XRF{"$FICH"} = "KO" ;
    }
    J'ai donc eu l'idée de faire plutôt un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $handle = $sftp->do_open("$REP_DEST/$FICH") or {LOG (...); $STAT_XRF{"$FICH"} = "KO" ;}
    Mais ca ne fonctionne pas... En gros, je ne sais faire un ... OR machin et machin2

    Pourriez vous m'aider ?

    Merci d'avance,
    Bonne journée
    Meloo

  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
    Salut,

    Ajoute un "do" entre "or" et "{"

  3. #3
    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
    A part ça, je vois pas l'intérêt de
    "undef" est une constante (une fonction retournant une valeur indéfinie), et qui retourne toujours "faux" dans un contexte booléen

  4. #4
    Membre averti
    Femme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 53
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Salut,

    Ajoute un "do" entre "or" et "{"
    J'ai vraiment de la chance, 2 lectures de ma demande d'aide... Et une réponse qui tombe pile poil dans ce que je recherchais !!

    Merci bien Philou
    Bonne journée

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 53
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    A part ça, je vois pas l'intérêt de
    "undef" est une constante (une fonction retournant une valeur indéfinie), et qui retourne toujours "faux" dans un contexte booléen
    ah c'est donc pour ca que ca marchais pas

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

Discussions similaires

  1. gestion des erreurs avec fichier .properties
    Par _momo dans le forum Struts 1
    Réponses: 2
    Dernier message: 20/08/2007, 14h05
  2. [J2EE/JSP] Gestion des erreurs avec une base SQL server 2005
    Par critok dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 30/04/2006, 16h57
  3. Gestion des erreurs avec setjump/longjump
    Par gege2061 dans le forum C
    Réponses: 1
    Dernier message: 05/02/2006, 15h51

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