1.
le shebang est le #! en tête de fichier. il indique à ton shell le chemin vers l'interpréteur. il ne doit pas y avoir d'espace entre #! et /Perl/bin/perl (au fait es-tu sûr du chemin ? quel est ta plateforme ?)
2.
le mieux est de boucler sur les lignes (lire une ligne tant que la fin de fichier n'est pas atteinte). voici comment le faire proprement:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #!/usr/bin/perl
use strict; use warnings;
open $inputfile_h, '<', 'path/to/mylogfile'
or die "$!\n";
open $outputfile_h, '>', 'path/to/myreport'
or die "$!\n";
while ( my $line = <$inputfile_h> ) {
my @fields = split /\s+/, $line;
my $data = @fields[2];
if (defined $data) {
print $outputfile_h $data, "\n";
} |
3.
en lisant les lignes et en appliquant le split au résultat de cette lecture (comme ci-dessus)
4.
a) parce que tu ne boucles pas à lecture et donc @infos ne contient au mieux que la première ligne b) si tu laisses @infos tel quel dans la boucle alors tu écrases sa valeur à chaque passage et à la fin @infos contient les données de la dernière ligne.
Question à te poser: pourquoi veux-tu passer par des subroutines (quel est ton objectif) ?
Partager