L'exemple le plus basique ressemble à ceci:
#!/usr/bin/env perl
use strict;
use warnings;
open(F, "<", "test.txt") or die("Cannot open test.txt: $!\n"); # (1)
my @lines =();
while(<F>) { chomp; push(@lines, $_); } # (2)
close(F);
print "@lines"; # (3) stringify
(1) est l'endroit où le fichier est ouvert. (2) Les poignées de fichier fonctionnent bien dans les environnements de liste (les environnements scalaires/listes sont définis par la valeur de gauche), donc si vous affectez un tableau à un descripteur de fichier, toutes les lignes sont intégrées dans le tableau. Les lignes sont délimitées (terminées) par la valeur $/
, le séparateur d'enregistrement d'entrée. Si vous use English;
, vous pouvez utiliser $IRS
ou $INPUT_RECORD_SEPARATOR
. Cette valeur par défaut est le caractère de nouvelle ligne \n
;
Bien que cela semble être une bonne idée, je viens d'oublier le fait que si vous imprimez toutes les lignes, la fin \n
sera également imprimée. Baaad moi.
A l'origine le code était:
my @lines = <F>;
au lieu de la boucle while
. Ceci est encore une alternative viable, mais il faut échanger (3) avec chomp
ing puis impression/stringifying tous les éléments:
for (@lines) { chomp; }
print "@lines";
(3) Stringifying signifie la conversion d'un tableau à une chaîne de caractères et l'insertion de la valeur $"
entre les éléments du tableau. Ceci est par défaut un espace.
Voir: the perlvar page.
Ainsi, le 2ème essai réel est:
#!/usr/bin/env perl
use strict;
use warnings;
open(F, "<", "test.txt") or die("Cannot open test.txt: $!\n"); # (1)
my @lines = <F>; # (2)
close(F);
chomp(@lines);
print "@lines"; # (3) stringify
+1 pour les restrictions, les handles de fichiers lexicaux et les 3 arguments 'open'. :) – Ether
Vous devriez vérifier si le fichier a été ouvert avec succès. Toujours. Ou 'utiliser autodie;' –
bon point. fixé! – Corey