Nouvel an Advance souhaite à tous.Comment puis-je lire un motif personnalisé à partir d'un fichier en Perl?
J'ai un fichier journal d'erreurs avec le contenu dans un paramètre de modèle, résultat et stderr (stderr peut être sur plusieurs lignes).
$cat error_log
<parameter>:test_tot_count
<result>:1
<stderr>:Expected "test_tot_count=2" and the actual value is 3
test_tot_count = 3
<parameter>:test_one_count
<result>:0
<stderr>:Expected "test_one_count=2" and the actual value is 0
test_one_count = 0
<parameter>:test_two_count
<result>:4
<stderr>:Expected "test_two_count=2" and the actual value is 4
test_two_count = 4
...
J'ai besoin d'écrire une fonction en Perl pour stocker chaque paramètre, de résultat et stderr dans une table de tableau ou de hachage.
Ceci est notre propre structure définie en interne. J'ai écrit la fonction Perl comme ça. Existe-t-il une meilleure façon de le faire en utilisant l'expression régulière elle-même?
my $err_msg = "";
while (<ERR_LOG>)
{
if (/<parameter>:/)
{
s/<parameter>://;
push @parameter, $_;
}
elsif (/<result>:/)
{
s/<result>://;
push @result, $_;
}
elsif (/<stderr>:/)
{
if (length($err_msg) > 0)
{
push @stderr, $err_msg;
}
s/<stderr>://;
$err_msg = $_;
}
else
{
$err_msg .= $_;
}
}
if (length($err_msg) > 0)
{
push @stderr, $err_msg;
}
J'aime le premier. C'est un refactor sympa et serré. +1 – Axeman
'Utiliser Switch 'Perl6'', fonctionne sur les anciens Perls. –
Le deuxième est ** beaucoup ** meilleur. –