Perl 스크립트는 정규식을 사용하여 웹 링크를 추출합니다.

Perl 스크립트는 정규식을 사용하여 웹 링크를 추출합니다.

저는 Perl로 스크립트를 작성하려고 하며 정규 표현식을 사용하여 file.txt(웹 사이트 목록이 포함되어 있음)라는 파일에서 웹 링크를 추출하려고 합니다. 링크를 인쇄할 수 없습니다. 이것은 내 코드입니다. 감사합니다.

 #!/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";
 }

답변1

HTML을 구문 분석하기 위해 정규식을 사용하지 마십시오, 특히 Perl을 사용하여 올바른 작업을 수행하는 것이 더 쉽기 때문입니다. 예를 들어:

#!/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);

관련 정보