在Perl中保存URL的相关部分

在Perl中保存URL的相关部分,perl,Perl,我正在执行以下操作以将URL的相关部分保存到Perl变量: ($url) = $url =~ m! (.+?\w) (?: /|\z) !x; ($url) = $url =~ /\/\/(.*)/; 我试图保存“http(s |):/”和下一个“/”之间的所有内容。有没有更好的方法在单行上执行此操作?使用此正则表达式::\/\/([^\/]+)\/ 例如: #!/usr/bin/perl $url = 'http://stackoverflow.com/questions/'; $url

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

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

我试图保存“http(s |):/”和下一个“/”之间的所有内容。有没有更好的方法在单行上执行此操作?

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

例如:

#!/usr/bin/perl

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

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

例如:

#!/usr/bin/perl

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

产出:

www.stackoverflow.com
www.stackoverflow.com:80
使用

产出:

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

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

my ($host_port) = $uri =~ m{ ^ https? :// ([^/]*) }xi;
或者如果你只是想要主人

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

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

my ($host_port) = $uri =~ m{ ^ https? :// ([^/]*) }xi;
或者如果你只是想要主人

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

您想要什么
http://host:8080/
?我想我想要包括端口。你想要什么
http://host:8080/
?我想我希望包含端口。注意:如果URI的格式不正确,这将给出错误的结果。我无法使其正常工作,但可能是我做错了。注意:这将给出如果URI的格式不正确,则返回错误的结果。我无法使其正常工作,但可能是我做错了什么。