Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ouvrir des fichiers en toute tranquilité

3 réponses
Avatar
mpg
Bonjour,

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.

3 réponses

Avatar
Nicolas George
mpg wrote in message <g941ie$2thi$:
(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";

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.
Avatar
mpg
Le (on) mercredi 27 août 2008 19:30, Nicolas George a écrit (wrote) :

mpg wrote in message <g941ie$2thi$:
(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.
Avatar
Nicolas George
mpg wrote in message <g944md$880$:
Tu veux dire écrire

open FH, ">", "fichier";



Non, open my $fh, ">", "fichier";

plutôt que

open FH, ">fichier";



Oui.