我有一些网址,例如http://anytext.a.abs.com
在这些中,'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......;
}
现在,我如何解析其中包含动态数据的网址?
答案 0 :(得分: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 :(得分:1)
这样的事可能吗?
否则,您可以使用URI类进行网址操作。
my $protocol = 'http://'
my $url_end = '.a.abs.com';
$url = $protocol . "anytext" . $url_end;
my $request = new HTTP::Request 'GET', $url;
my $response = $ua->request($request);
if ($response->is_success)
{
function......;
}
答案 2 :(得分: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
。
答案 3 :(得分:0)
好吧,就像您要解析任何其他数据一样:使用有关结构的信息。 您有一个协议部分,后跟“冒号斜杠”,然后是主机,后跟可选的“冒号端口号”和主机上的可选路径。 所以...构建一个解析你所追求的信息的小解析器。
坦率地说,如果你只是在寻找“这里有什么样的'任何文字'?”,这个表格的RegEx应该有帮助(未经测试;用作指导):
$url =~ m/http\:\/\/(.*).a.abs.com/;
$subdomain = $1;
$do_something('with', $subdomain);
很抱歉,如果我严重误解了手头的问题。请解释一下“我如何解析其中包含动态数据的网址”的含义?在那种情况下:)