Quand on ouvre des fichiers, à moins d'être kamikaze, on teste si
l'ouverture a marché avec un 'or die'. Si on pas trop maso, on met même un
message sympa avec le die, et en général on aime bien mettre le même de
partout. Sauf que c'est pénible de recopier tout le temps la message.
J'ai essayé d'utiliser une routine :
sub open_r {
($fh, $file) = @_;
$file = "$file.tex" unless ($file =~ /\.tex$/);
open ($fh, $file) or die "Pas moyen de lire $file :\n\t$!\n";
}
(Usage : &open_r (MAIN, "mainfile").)
mais je n'en suis pas très satisfait pour deux raisons :
- avec use warnings je me prends des avertissement comme quoi
Name "main::PARA" used only once: possible typo at ./truc.pl line 34.
- et quand l'ouverture échoue, je n'ai plus les infos sympas du
genre 'at ./truc.pl line 17' (voire 'at <SUB> line 42' quand le problème
survient dans une boucle while (<SUB>)).
J'imagine bien que je suis loin d'être le premier à me poser ce genre de
questions, mais je n'ai pas réussi à trouver les bons mots-clé google pour
obtenir des infos intéressantes. Aussi viens-je vous demander : vous, vous
faites comment ?
Manuel.
> - avec use warnings je me prends des avertissement comme quoi
> Name "main::PARA" used only once: possible typo at ./truc.pl line 34.
Utilise l'auto-vivification des références :
open my $main, "mainfile";
Et profites-en pour utiliser open avec la forme à trois arguments.
> - et quand l'ouverture échoue, je n'ai plus les infos sympas du
> genre 'at ./truc.pl line 17' (voire 'at <SUB> line 42' quand le problème
> survient dans une boucle while (<SUB>)).
man Carp
Et tant qu'on y est, man fatal.
> mpg wrote in message <g941ie$2thi$1...@talisker.lacave.net>:
>> (Usage : &open_r (MAIN, "mainfile").)
>
>> - avec use warnings je me prends des avertissement comme quoi
>> Name "main::PARA" used only once: possible typo at ./truc.pl line 34.
>
> Utilise l'auto-vivification des références :
>
> open my $main, "mainfile";
>
Ok, je vais essayer.
> Et profites-en pour utiliser open avec la forme à trois arguments.
>
Tu veux dire écrire
open FH, ">", "fichier";
plutôt que
open FH, ">fichier";
?
> man Carp
>
> Et tant qu'on y est, man fatal.
Merci, ça a l'air très intéressant.
Manuel.
Non, open my $fh, ">", "fichier";
> plutôt que
>
> open FH, ">fichier";
Oui.