ne pas faire planter mon script - Perl - Programmation
Marsh Posté le 01-04-2008 à 16:48:30
Tester si le fichier existe et si tu peux écrire dedans avant de faire des opérations dessus ?
-e File or directory name exists
-w File or directory is writable by this (effective) user or group
Marsh Posté le 01-04-2008 à 16:58:29
mais si jamais le test plante, cela va faire planter mon script principal
il existe pas un truc en perl pour le rendre independant;
PS : quand je disai ouvrir un fichier c'etait un exemple
Marsh Posté le 16-04-2008 à 17:26:03
donny3 a écrit : mais si jamais le test plante, cela va faire planter mon script principal |
non: un test comme
if (-e $filename and -f _ and -r _)
va tester si $filename existe, si c'est un fichier (et pas un repertoire ou autre), et s'il est lisible.
Si une des conditions n'est pas remplie, le test aura comme valeur 0 (ou false, je ne sais pas) et si les 3 sont verifiées, il aura comme valeur 1 (ou true). A aucun moment les tests ne vont faire planter quoi que ce soit, ils sont justement la pour tester avant de realiser une operation d'entrée sortie (qui elle pourrait faire planter..)
Si tu as perl 5.10, if (-e $filename and -f _ and -r _) s'écrit plus simplement comme if (-r -f -e $filename) attention, l'ordre est inversé. Cette ecriture plus simple ne passe pas avec perl 5.8 (et sans doute 5.9) comme je l'ai appris a mes depends ce dimanche.
A+,
Marsh Posté le 16-04-2008 à 18:04:18
d'après son PS il cherche une combine plus générale pour traiter des exceptions.
Marsh Posté le 16-04-2008 à 18:27:58
Je voulais juste corriger son affirmation vis a vis des tests de fichier.
A+,
Marsh Posté le 01-04-2008 à 14:48:44
Salut,
J'ai un script qui est censer tourné en boucle à l'infini
je voudrais faire quelquechose dans mon script (ecrire dans un fichier)
mais je ne voudrais pas que si je n'arrive pas ecrire ou ouvrir le fichier mon script initial plante;
Existerait il en perl une fonction ou quelquechose dans laquel je pourrai encapsuler ce bout de code pour qu'il ne fasse pas planter mon script si jamais il ne fonctionne pas;
Merci