在Perl中保存URL的相关部分

时间:2014-05-14 17:02:44

标签: perl

我正在执行以下操作以将URL的相关部分保存到Perl变量:

($url) = $url =~ m! (.+?\w) (?: /|\z) !x;
($url) = $url =~ /\/\/(.*)/;

我正在尝试在“http(s |)://”和下一个“/”之间保存所有内容。有没有更好的方法在一行上做到这一点?

3 个答案:

答案 0 :(得分:4)

使用URI

use URI;

my $uri = URI->new('http://www.stackoverflow.com/questions');
say $uri->host;
say $uri->host_port;

输出:

www.stackoverflow.com
www.stackoverflow.com:80

答案 1 :(得分:1)

使用此正则表达式::\/\/([^\/]+)\/

示例:

#!/usr/bin/perl

$url = 'http://stackoverflow.com/questions/';
$url =~ /:\/\/([^\/]+)\//;
print $1."\n";

答案 2 :(得分:1)

URI.pm很好,但你并不总是需要开销。

my ($host_port) = $uri =~ m{ ^ https? :// ([^/]*) }xi;

或者如果您只是想要主持人,

my ($host) = $uri =~ m{ ^ https? :// ([^/:]*) }xi;