cerhu > comp.lang.* > comp.lang.perl

kurtz le pirate (10/03/2020, 19h14)
Bonsoir,

Je dois être fatigué ce soir... je ne comprends pas pourquoi je n'arrive
pas à extraire une chaine.

J'ai du texte dans une variable obtenue par :
my $page = getprint('http://xxxxxxxxxxx') or die 'Unable to get page';

Un extrait du contenu de $page :
....
6HwySTmdYJp2dpaWKEregYrVfn9/B0xkD2U6+e+sOaHqImTfLrycUOIZM1hJwC3oemPXbi/y5PnsrJ136bUa8pxu69BklmANWwDRkgR1wmwVaglyi3Nz6JLQ+ ZG5NxQsgNdAhmIfJN7wxgoWg9fxzPQ+c/g9YAIXgeUKCyipJO4uR/wswAOIwB/5IgxvbAAAAAElFTkSuQmCC"
alt="PHP logo" /></a><h1 class="p">PHP Version 5.6.36</h1>
</td></tr>
</table>
<table>
<tr><td class="e">System </td><td class="v">Linux
node04.cluster1.easy-hebergement.net 4.4.111-cluster-lts #1 SMP Wed Jan
10 14:53:24 UTC 2018 x86_64 </td></tr>
<tr><td class="e">Build Date </td><td class="v">May 13 2018 14:24:33
</td></tr>
<tr><td class="e">Configure Command </td><td class="v">
'./configure' '--prefix=/opt/php56'
....

Je veux récupére le "Linux node04.cluster1.easy-hebergement.net
4.4.111-cluster-lts #1 SMP Wed Jan 10 14:53:24 UTC 2018 x86_64".

Je fais :
my $val = $page =~ m/<tr><td class="e">System <\/td><td
class="v">(.*)<\/td><\/tr>/;
print "--> $val\n";

.... et $val est vide.

Je teste avec les mêmes choses sur <https://regex101.com/> et sur
<https://www.myregextester.com/>, j'ai bien le match dans group1.

Vous voyez ou je me trompe ?
Merci
Nicolas George (10/03/2020, 22h26)
kurtz le pirate , dans le message
<5e67cae8$0$5877$426a34cc>, a écrit :
> my $val = $page =~ m/<tr><td class="e">System <\/td><td
> class="v">(.*)<\/td><\/tr>/;
> print "--> $val\n";
> ... et $val est vide.


Déjà, pour récupérer une capture, il faut un contexte liste :

my ($val) = ...

Mais si ça avait marché, tu aurais $val = 1, ce qui n'est pas le cas.
Ici, il faudrait simplifier la regexp jusqu'à trouver quel bout ne
trouve pas.
kurtz le pirate (11/03/2020, 16h10)
On 10/03/2020 21:26, Nicolas George wrote:
[..]
>776a34cc>, a écrit :
> Déjà, pour récupérer une capture, il faut un contexte liste :
> my ($val) = ...
> Mais si ça avait marché, tu aurais $val = 1, ce qui n'est pas le cas.
> Ici, il faudrait simplifier la regexp jusqu'à trouver quel bout ne
> trouve pas.


oui, déjà le contexte liste...merci
kurtz le pirate (12/03/2020, 19h13)
On 11/03/2020 15:10, kurtz le pirate wrote:

Pour info et comme je ne m'en sors pas avec LWP::Simple et getprint(),
je suis parti sur une autre méthode :

my $url = 'http://xxxxxxxxxxxxxx';
my $html = qx{wget --quiet --output-document=- $url};
if ($html =~ m/System <\/td><td class="v">(.*)<\/td>/) {
print ">> $1 <<\n";
}

Il semblerait donc que getprint() renvoi des données... pas exploitables
directement :(

Ca fonctionne comme ça. Cela me suffit.
Nicolas George (12/03/2020, 21h25)
kurtz le pirate , dans le message
<5e6a6dd6$0$21591$426a74cc>, a écrit :
> Il semblerait donc que getprint() renvoi des données... pas exploitables
> directement :(


Si la seule différence avec get est que ça fait un print en plus, alors
je n'ai pas la même expérience.
Discussions similaires
Extraction chaine

extraction de chaine

Extraction de chaine

Extraction de chaine en DOS


Fuseau horaire GMT +2. Il est actuellement 04h13. | Privacy Policy