Retour tableau à partir de la sous-routine
Je suis tenter de renvoyer des données à partir d'un tableau. Le Code est ci-dessous:
my %ignorables = map { $_ => 1 } qw([notice mpmstats: rdy bsy rd wr ka log dns cls bsy: in);
open my $error_fh, '<', 'iset_error_log';
sub findLines {
# Iterates over the lines in the file, putting each into $_
while (<$error_fh>) {
# Only worry about the lines containing [notice
if (/\[notice/) {
if (/\brdy\b/){
print "\n";
}
else {
print ",";
}
# Split the line into fields, separated by spaces, skip the %ignorables
my @line = grep { not defined $ignorables{$_} } split /\s+/;
# More cleanup
s/|^\[|notice|[]]//g for @line; # remove [ from [foo
# Output the line
@line = join(",", @line);
s/,,/,/g for @line;
print @line;
}
}
}
&findLines;
Lors de l'impression, la sortie est comme suit:
Mon,Jun,25,23:24:43,2012,999,1,0,1,0,0,0,0,Mon,Jun,25,23:24:43,2012,1,mod_was_ap22_http.c
Mon,Jun,25,23:32:44,2012,999,1,0,1,0,0,0,0,Mon,Jun,25,23:32:44,2012,1,mod_was_ap22_http.c
Mon,Jun,25,23:33:44,2012,999,1,0,1,0,0,0,0,Mon,Jun,25,23:33:44,2012,1,mod_was_ap22_http.c
Mon,Jun,25,23:45:44,2012,999,1,0,1,0,0,0,0,Mon,Jun,25,23:45:44,2012,1,mod_was_ap22_http.c
Comment puis-je retourner un tableau en dehors de la sous-routine?
- Tu veux dire au lieu de l'imprimer? Avec le habilement déguisé retour de l'opérateur. Mais vous avez probablement dire quelque chose d'autre.
- perlmonks.org/?node_id=979557
Vous devez vous connecter pour publier un commentaire.
Pas testé:
Je ne sais pas ce que ton if/else est en train de faire, mais je pense que vous voulez pousser les \n ou
,
à@list
.Aussi, vous devriez probablement ouvrir le fichier dans le sous-programme, et de transmettre le fichier à ouvrir dans les paramètres.