J'aime le faire avec un do
bloc dans lequel je localiser @ARGV
si je peux utiliser le diamant de l'opérateur à faire le fichier de la magie pour moi.
my $contents = do { local(@ARGV, $/) = $file; <> };
Si vous en avez besoin pour être un peu plus robuste, vous pouvez facilement transformer cela en une sous-routine.
Si vous avez besoin de quelque chose de vraiment solide qui gère toutes sortes de cas particuliers, l'utilisation de Fichier::Slurp. Même si vous n'allez pas l'utiliser, jetez un oeil à la source pour voir tous les farfelus les situations qu'il a à gérer. Fichier::Slurp a un gros problème de sécurité qui n'a pas l'air d'avoir une solution. C'est en partie son incapacité à gérer correctement les encodages. Même ma réponse a ce problème. Si vous avez besoin de gérer l'encodage (peut-être parce que vous ne faites pas tout ce que l'UTF-8 par défaut), cela permet de:
my $contents = do {
open my $fh, '<:encoding(UTF-8)', $file or die '...';
<$fh>;
};
Si vous n'avez pas besoin de modifier le fichier, vous pourriez être en mesure d'utiliser le Fichier::Map.