![Perl 스크립트는 정규식을 사용하여 웹 링크를 추출합니다.](https://linux55.com/image/98699/Perl%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94%20%EC%A0%95%EA%B7%9C%EC%8B%9D%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%9B%B9%20%EB%A7%81%ED%81%AC%EB%A5%BC%20%EC%B6%94%EC%B6%9C%ED%95%A9%EB%8B%88%EB%8B%A4..png)
저는 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);