2010-07-08 4 views
3

C'est quelque chose que j'ai eu du mal à trouver, j'ai eu la chance d'avoir une réponse sur l'autre chose que j'essayais de faire (code ci-dessous) .. donc dites que j'utilise l'entrée $ content (En réalité, ce serait une page HTML complète, pas seulement l'extrait que j'ai donné ci-dessous) et je veux juste obtenir le contenu de la balise d'entrée qui a le nom ou l'identifiant "hush_username". La façon dont il est lui donne maintenant le contenu de toutes les balises d'entrée .. la seule chose que je pouvais trouver sur ce dit quelque chose comme incorporant ceci:Analyser Juste un tag HTML spécifique par nom ou identifiant en Perl?

$tag->[1]{name} and $tag->[1]{name} eq "hush_username" ; 

Mais j'ai pu obtenir ce travail. J'apprécierais grandement n'importe quel conseil

#!/usr/bin/perl 
use strict; use warnings; 
use HTML::TokeParser::Simple; 
$content = do { local $/; <DATA> };    
my $parser = HTML::TokeParser::Simple->new(\$content); 

while (my $tag = $parser->get_tag('input')) { 
    print $tag->as_is, "\n"; 
    print "####" ; 
    for my $attr (qw(type name value)) { 
     printf qq{%s="%s"\n}, $attr, $tag->get_attr($attr); 
    } 
} 
__DATA__ 
<form name="authenticationform" id="authenticationform" 
    action="/authentication/login?skin=mobile&next_webapp_name=hushmail5&amp;next_webapp_url_name=m" method="post"> 
<input type="hidden" name="next_webapp_page" value=""/> 
<p><label for="hush_username">Email address:</label><br/> 
<input type="email" name="hush_username" id="hush_username" value="[email protected]"/></p> 
<p><label for="hush_passphrase">Passphrase:</label><br/> 
<input type="password" name="hush_passphrase" id="hush_passphrase" maxlength="1000" value=""/></p> 
<p><input type="checkbox" name="hush_remember_me" id="hush_remember_me" value="on" 
/><label for="hush_remember_me">Stay signed in when I close my browser</label></p> 
<p><input type="submit" value="Sign In"/></p> 
<input type="hidden" name="hush_customerid" value="0000000000000000"/> 
</form> 

Répondre

3

Gardez les choses simples. Que dis-tu de ça?

while (my $tag = $parser->get_tag('input')) { 
    my $name = $tag->get_attr('name'); 
    next unless defined $name and $name eq 'hush_username'; 
    print "Value: ", $tag->get_attr('value'), "\n"; 
} 
+0

Merci, cela m'aide beaucoup :) – Rick

Questions connexes