De perlfaq5 : Comment puis-je lire un fichier entier en une seule fois ? :
Vous pouvez utiliser le module File::Slurp pour le faire en une seule étape.
use File::Slurp;
$all_of_it = read_file($filename); # entire file in scalar
@all_lines = read_file($filename); # one line per element
L'approche habituelle de Perl pour traiter toutes les lignes d'un fichier est de le faire une ligne à la fois :
open (INPUT, $file) || die "can't open $file: $!";
while (<INPUT>) {
chomp;
# do something with $_
}
close(INPUT) || die "can't close $file: $!";
C'est beaucoup plus efficace que de lire l'ensemble du fichier en mémoire sous forme de tableau de lignes et de le traiter un élément à la fois, ce qui est souvent, voire presque toujours, la mauvaise approche. Chaque fois que vous voyez quelqu'un faire cela :
@lines = <INPUT>;
vous devriez réfléchir longuement et sérieusement à la raison pour laquelle vous avez besoin de tout charger en même temps. Ce n'est tout simplement pas une solution évolutive. Vous pourriez également trouver plus amusant d'utiliser le module standard Tie::File, ou les liaisons $DB_RECNO du module DB_File, qui vous permettent de lier un tableau à un fichier de sorte que l'accès à un élément du tableau donne accès à la ligne correspondante dans le fichier.
Vous pouvez lire le contenu entier du fichier dans un scalaire.
{
local(*INPUT, $/);
open (INPUT, $file) || die "can't open $file: $!";
$var = <INPUT>;
}
Cela défait temporairement votre séparateur d'enregistrement, et ferme automatiquement le fichier à la sortie du bloc. Si le fichier est déjà ouvert, utilisez simplement ceci :
$var = do { local $/; <INPUT> };
Pour les fichiers ordinaires, vous pouvez également utiliser la fonction de lecture.
read( INPUT, $var, -s INPUT );
Le troisième argument teste la taille en octets des données du fichier INPUT et lit ce nombre d'octets dans le tampon $var.
8 votes
Vous devriez vraiment vérifier quelle est la définition de "Cant install", c'est un problème courant et c'est souvent un argument qui n'a pas besoin d'être avancé. stackoverflow.com/questions/755168/perl-myths/
1 votes
Je suis en fait incapable de modifier quoi que ce soit sur l'ensemble du serveur sur lequel ce script est exécuté, à part le script lui-même.
0 votes
Donc vous n'êtes pas autorisé à ajouter des fichiers, n'importe où sur le serveur ?
0 votes
Modules FatPack dans votre script ? De plus, il semble que vous pensiez à analyser le HTML avec des expressions régulières, ne le faites pas.