{s/\s*\n$//; s/^\d+:\s*//; (il y avait un ; inutile après un premier ;)
c'est
1) s/\s*\n$//;
Un classique: on nettoie la fin de ligne
On vire les espaces éventuels (\s espace \s* espaces éventuels) suivis d'un caractère de fin de ligne (\n) en fin de ligne ($)
s/toto// ça remplace (une fois) toto par rien, donc ça le vire, dans la variable $_ qui contient la ligne courante
car, map { blabla } @toto; c'est la même chose que foreach (@toto) {blabla;} qui assigne chaque ligne du tableau @toto à $_
L'avantage de map que j'utilise ici, c'est que comme le tableau arrive après le bloc, on peut y substituer un truc complexe en fin de ligne, alors que ça serait lourd avec un foreach.
2) s/^\d+:\s*//
la aussi, clairement c'est du nettoyage, puisqu'on a // en fin d'expression:
on vire ce qui est en début de ligne (^), qui est constitué d'une suite de chiffres suivis d'un : (\d+:) suivi éventuellement de blancs (\s*)
Bref cette partie vire ce qui est avant le 5.5884907200e+06 d'une ligne 1328051100: 5.5884907200e+06
tandis que l'autre vire ce qui est après le 5.5884907200e+06 d'une ligne 1328051100: 5.5884907200e+06 (on le voit pas mais il y a du blanc)
Donc au final, les deux ne laissent que la partie 5.5884907200e+06 d'une ligne 1328051100: 5.5884907200e+06 et c'est ce qu'il faut à perl pour qu'il puisse l'interpréter comme un nombre (du blanc avant ou après ferait échouer cela).
A+,
Message édité par gilou le 16-02-2012 à 12:01:13
---------------
There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! --