C'est normal : lors de ton 1° test
if ( $1 =~ /TotalVisits/ ) {
, les variables $1, $2, $3... sont réinitialisées. Donc au moment de ton 2° test, étant donné que tu n'as rien stocké dans $1 dans le 1° test, $1 est une valeur indéfinie dans ton test
if ( $1 =~ /TotalUnique/) {
C'est ce qu'on appelle un effet de bord.
Toujours se méfier des variables automatiques !
La solution est de stocker la valeur dans une variable avant de faire les tests :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
while ( <MOISAvant> ) {
if ( $_ =~ /^(\S+)\s([0-9]+)/ )
{
my $champ1 = $1;
$temp = $2;
if ( $champ1 =~ /TotalVisits/ ) {
#print(" TOTAL Visits : $temp \n");
$G_visites = $temp;
}
if ( $champ1 =~ /TotalUnique/) {
$G_visitesDiff = $temp;
}
}
} |
Quand au warning, il te dit qu'il y a une erreur avec un test m//, car lorsque tu fais appel à une regexp avec //, l'opérateur m (m pour match) est implicite, autrement dit:
1 2 3 4
|
if ( $champ1 =~ /TotalUnique/)
# équivaut à
if ( $champ1 =~ m/TotalUnique/) |
Partager