Perl or multiple
Fermé
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
-
30 oct. 2009 à 14:00
sbouli Messages postés 200 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 14 août 2014 - 30 oct. 2009 à 16:53
sbouli Messages postés 200 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 14 août 2014 - 30 oct. 2009 à 16:53
A voir également:
- Perl or multiple
- Or - Guide
- Liste déroulante choix multiple excel - Guide
- Ecran multiple pc - Guide
- Windows presse papier multiple - Guide
- Paris multiple 2/6 explication - Forum Excel
4 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
30 oct. 2009 à 16:39
30 oct. 2009 à 16:39
Re,
Regarde tes blocs do { }
Il faut mettre ; partout
donc
Voilà
Regarde tes blocs do { }
Il faut mettre ; partout
donc
do { BLOC };
Voilà
sub ftp_upload { ($repertoire, $fichier) = @_; $ftp = Net::FTP->new($ftp_host, Debug => 0, Timeout=>240) or do { print "connexion impossible sur $ftp_host: $@\n"; return 0; }; #or die "Cannot connect to $goftp_ftp: $@"; $ftp->login($ftp_usr,$ftp_mdp) or do { print "login impossible sur $ftp_host:",$ftp->message; return 0; }; #or die "Cannot login ", $ftp->message; $ftp->put("$repertoire/$fichier") or do { print "put impossible sur $ftp_host de $repertoire$fichier :",$ftp->message; return 0; }; #or die "put failed ", $ftp->message; $ftp->quit; return 1; } sub ftp_erase { ($fichier_distant) = @_; $ftp = Net::FTP->new($ftp_host, Debug => 0, Timeout=>240) or do { print "connexion impossible sur $ftp_host: $@"; return 0; }; #or die "Cannot connect to $ftp_host: $@"; $ftp->login($ftp_usr,$ftp_mdp) or do { print "login impossible sur $ftp_host:",$ftp->message; return 0; }; #or die "Cannot login ", $ftp->message; $ftp->delete($fichier_distant) or do { print "delete impossible sur $ftp_host:",$ftp->message; return 0; }; #or die "delete failed ", $ftp->message; $ftp->quit; return 1; }
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
30 oct. 2009 à 16:13
30 oct. 2009 à 16:13
Salut,
mais je ne comprends pas l'histoire de ton return
or do BLOC
mais je ne comprends pas l'histoire de ton return
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
30 oct. 2009 à 16:33
30 oct. 2009 à 16:33
hello,
en fait j'ai créé 2 fonctions en charge du FTP (upload et erase) :
comme je veux pouvoir faire des retry, je sors le die et je met un return 0 qui me permet de voir que ça a merdouillé :
appel :
et mes fonctions :
Cependant même avec le do, j'ai des erreurs :
la ligne 308 c'est : $ftp->login($ftp_usr,$ftp_mdp)
au secours
Merci d'avance.
Stéphane
en fait j'ai créé 2 fonctions en charge du FTP (upload et erase) :
comme je veux pouvoir faire des retry, je sors le die et je met un return 0 qui me permet de voir que ça a merdouillé :
appel :
$retry=3; $ftp_ok=false; until ($retry = 0 || $ftp_ok) { $ftp_ok=ftp_upload($repertoire_destinataire,$fichier_destinataire); $retry--; if (!$ftp_ok) {sleep(30);} } if (!$ftp_ok) { #Envoi d'un mail et arret @args=("/usr/bin/mail", "-s", "Erreur lors de l'upload FTP de $fichier_destinataire vers le FTP : $ftp_host"); system (@args) == 0 or die "erreur lors de l'envoi d'un mail @args failed: $?"; die "envoi par FTP impossible vers $ftp_host après 3 tentatives."; }
et mes fonctions :
sub ftp_upload { ($repertoire, $fichier) = @_; $ftp = Net::FTP->new($ftp_host, Debug => 0, Timeout=>240) or do { print "connexion impossible sur $ftp_host: $@\n"; return 0; }; #or die "Cannot connect to $goftp_ftp: $@"; $ftp->login($ftp_usr,$ftp_mdp) or do { print "login impossible sur $ftp_host:",$ftp->message; return 0; }; #or die "Cannot login ", $ftp->message; $ftp->put("$repertoire/$fichier") or do { print "put impossible sur $ftp_host de $repertoire$fichier :",$ftp->message; return 0; }; #or die "put failed ", $ftp->message; $ftp->quit; return 1; } sub ftp_erase { ($fichier_distant) = @_; $ftp = Net::FTP->new($ftp_host, Debug => 0, Timeout=>240) or do { print "connexion impossible sur $ftp_host: $@"; return 0; } #or die "Cannot connect to $ftp_host: $@"; $ftp->login($ftp_usr,$ftp_mdp) or do { print "login impossible sur $ftp_host:",$ftp->message; return 0; } #or die "Cannot login ", $ftp->message; $ftp->delete($fichier_distant) or do { print "delete impossible sur $ftp_host:",$ftp->message; return 0; } #or die "delete failed ", $ftp->message; $ftp->quit; return 1; }
Cependant même avec le do, j'ai des erreurs :
Scalar found where operator expected at /test.pl line 308, near "$ftp" (Missing semicolon on previous line?) Scalar found where operator expected at /test.pl line 315, near "$ftp" (Missing semicolon on previous line?) Scalar found where operator expected at /test.pl line 322, near "$ftp" (Missing semicolon on previous line?) syntax error at /test.pl line 308, near "$ftp" syntax error at /test.pl line 322, near "$ftp" syntax error at /test.pl line 324, near "}"
la ligne 308 c'est : $ftp->login($ftp_usr,$ftp_mdp)
au secours
Merci d'avance.
Stéphane
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
30 oct. 2009 à 16:53
30 oct. 2009 à 16:53
pff ... parfois je suis trop nul ...
bon, je comprend pas, mes print dans les sub n'affichent rien ...
et de même si je met :
le print "retour : $ftp_ok\n"; dans le until n'est pas affiché alors que le retourfin affiche false ... j'ai donc bien un bug à l'upload du FTP mais pas de message ...
J'ai dû rater un truc.
Stéphane
bon, je comprend pas, mes print dans les sub n'affichent rien ...
dans le sub ftp_upload : .... print "upload de $repertoire/$fichier\n"; $ftp->put("$repertoire/$fichier") or do { print "put impossible sur $ftp_host de $repertoire$fichier :",$ftp->message; return 0; }; #or die "put failed ", $ftp->message; print "fin upload de $repertoire/$fichier\n";
et de même si je met :
$retry=3; $ftp_ok=false; until ($retry = 0 || $ftp_ok) { $ftp_ok=ftp_upload($repertoire_destinataire,$fichier_destinataire); print "retour : $ftp_ok\n"; $retry--; if (!$ftp_ok) {sleep(30);} } print "retourfin : $ftp_ok\n"; if (!$ftp_ok) { #Envoi d'un mail et arret @args=("/usr/bin/mail", "-s", "Erreur lors de l'upload FTP de $fichier_destinataire vers le FTP : $ftp_host"); system (@args) == 0 or die "erreur lors de l'envoi d'un mail @args failed: $?"; die "envoi par FTP impossible vers $ftp_host après 3 tentatives."; }
le print "retour : $ftp_ok\n"; dans le until n'est pas affiché alors que le retourfin affiche false ... j'ai donc bien un bug à l'upload du FTP mais pas de message ...
J'ai dû rater un truc.
Stéphane