2012-03-06 4 views
7
#!/usr/bin/env perl 
use warnings; 
use 5.012; 
use utf8; 

use WWW::Mechanize::Cached; 
use Some::Module qw(some_method); 

my $url = '...'; 
my $result = some_method($url); 

Il some_method() utilizza se stesso get() modulo LWP::Simple.
Come posso sovrascrivere lo get() con il mio my_get() in questo script?Come sovrascrivere una funzione utilizzata in un metodo modulo?

sub my_get { 
    my $url; 
    my $mech = WWW::Mechanize::Cached->new(); 
    $mech->get($url); 
    my $content = $mech->content(format => 'text'); 
    return $content; 
} 

risposta

10
sub WWW::Mechanize::Cached::get { 
    # your code 
} 

O, se il metodo get è in realtà, come si implica nella questione, è ereditato da LWP :: Simple -

sub LWP::Simple::get { 
    # your code 
} 
+1

Assicurarsi di caricare il modulo che si desidera ignorare prima di fare questo, e si potrebbe desiderare un 'no warning 'ridefinire''. Parlo molto di questo argomento in _Mastering Perl_. C'è un intero capitolo su questa domanda. :) –