Perl or multiple
sbouli
Messages postés
200
Date d'inscription
Statut
Membre
Dernière intervention
-
sbouli Messages postés 200 Date d'inscription Statut Membre Dernière intervention -
sbouli Messages postés 200 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche à transformer :
$ftp = Net::FTP->new($ftp_host, Debug => 0, Timeout=>240)
or die "connexion impossible sur $ftp_host: $@";
en
$ftp = Net::FTP->new($ftp_host, Debug => 0, Timeout=>240)
or {
print "connexion impossible sur $ftp_host: $@\n";
return 0;
}
mais je dois rater quelque chose car j'ai une erreur à la ligne suivante, disant que j'ai surement oublié un ; au dessus ....
au secours.
Stéphane
Je cherche à transformer :
$ftp = Net::FTP->new($ftp_host, Debug => 0, Timeout=>240)
or die "connexion impossible sur $ftp_host: $@";
en
$ftp = Net::FTP->new($ftp_host, Debug => 0, Timeout=>240)
or {
print "connexion impossible sur $ftp_host: $@\n";
return 0;
}
mais je dois rater quelque chose car j'ai une erreur à la ligne suivante, disant que j'ai surement oublié un ; au dessus ....
au secours.
Stéphane
A voir également:
- Perl or multiple
- Or - Guide
- Ecran multiple pc - Guide
- Excel cellule choix multiple - Guide
- Copier coller multiple - Guide
- Carre or bercy ✓ - Forum Loisirs / Divertissements
4 réponses
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; }
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
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