2009-09-17 3 views
0

같은 URL이 있습니다. http://anytext.a.abs.comPerl을 사용하여 URL에서 호스트 이름을 변경하려면 어떻게해야합니까?

'anytext'는 동적 인 데이터입니다. URL의 나머지는 모든 경우에 동일하게 유지됩니다.

이제
$url = "http://anytext.a.abs.com"; 


    my $request = new HTTP::Request 'GET', $url; 
    my $response = $ua->request($request); 
    if ($response->is_success) 
    { 
     function......; 
    } 

, 어떻게 내가 동적 데이터가 URL을 구문 분석 할 수 있습니다 :

나는 다음과 같은 코드를 사용하고 있습니다?

답변

3

확실하지하지만 당신은 어쩌면이 같은?

for my $host qw(anytext someothertext andanother) { 
    my $url  = "http://$host.a.abs.com"; 
    my $request = new HTTP::Request 'GET', $url; 
    my $response = $ua->request($request); 
    if ($response->is_success) 
    { 
     function......; 
    } 
} 
1

뭔가 계신이 가까이?

그렇지 않으면 URI 클래스를 사용하여 URL을 조작 할 수 있습니다.

0

다른 데이터를 구문 분석하는 것처럼 : 구조에 대한 정보를 사용하십시오. 프로토콜 부분 다음에 "콜론 슬래시"가오고 호스트 다음에 선택적 "콜론 포트 번호"와 호스트의 선택적 경로가옵니다. ... 정보를 추출하는 작은 파서를 만드십시오.

그리고 당신은 단지 "exactely 여기에 anytext '이 무엇인지?"를 사냥하는 경우 솔직히,이 양식의 정규식 (검증되지 않은; 지침으로 사용) 도움이 될 것입니다

$url =~ m/http\:\/\/(.*).a.abs.com/; 
$subdomain = $1; 

$do_something('with', $subdomain); 

죄송 심하게 나는 경우 손에있는 문제를 오해했다. '동적 데이터가 포함 된 URL을 어떻게 파싱 할 수 있습니까?'라는 의미를 설명해주십시오. 이 경우 :)

1

에 나는이 아마 충분하다 생각 :

# The regex specifies a string preceded by two slashes and all non-dots 
my ($host_name) = $url =~ m{//([^.]+)}; 

그리고 당신이 그것을 변경하려면 : 심지어

$url =~ s|^http://\K([^.]+)|$host_name_I_want|; 

또는 :

substr($url, index($url, $host_name), length($host_name), $host_name_I_want); 

을이 것 세그먼트를 충분히 확장하여 $host_name_I_want을 수용합니다.

관련 문제