Script Perl que extrai links da Web usando expressões regulares

0

Estou tentando escrever um script em perl e tentando extrair links da web usando expressões regulares de um arquivo chamado file.txt (que tem uma lista de sites). Não consigo imprimir os links. Aqui está o meu código, obrigado:

 #!/usr/bin/perl 
  use strict;
  use warnings;
   my @web;

   open my $input, '<', 'file.txt' or die $!;

 #loop through file
  while(my $row = <$input>){
   chomp $row;
    if($row =~ /http:(.+)/) {
       push @web, $1;
    }
  }  

 for my $w (@web){
   print "< $w\n";
 }
    
por maria 15.11.2016 / 19:15

1 resposta

3

Não use expressões regulares para analisar HTML , especialmente porque com o Perl é mais fácil fazer isso direito. Por exemplo:

#!/usr/bin/env perl

use strict;
use warnings;

use HTML::LinkExtor;

my ( @web, $fn, $p );

sub cb {
    my ( undef, %links ) = @_;
    push @web, values %links;
}

$p = HTML::LinkExtor->new( \&cb );
while ( $fn = shift ) {
    $p->parse_file($fn);
    $p->eof;
}

print "$_\n" for (@web);
    
por 15.11.2016 / 20:14