String 删除字符串Perl的一部分

String 删除字符串Perl的一部分,string,perl,str-replace,String,Perl,Str Replace,我有perl版本的 return "$file->{srv_cgi_url}/dl.cgi/$hash/$fname"; 在哪里 返回 http://s1.site.com/cgi-bin/ 如何从字符串中删除尾随的/cgi-bin/ 谢谢 像这样: my $new = $file->{srv_cgi_url}; $new =~ s{/cgi-bin/}{}; 仅此而已。有关详细信息,请参阅。虽然替换可以工作,但它很脆弱,很难扩展和维护。我极力推荐学习如何使用,而不是(本例

我有perl版本的

  return "$file->{srv_cgi_url}/dl.cgi/$hash/$fname";
在哪里

返回

http://s1.site.com/cgi-bin/
如何从字符串中删除尾随的/cgi-bin/

谢谢

像这样:

my $new = $file->{srv_cgi_url};
$new =~ s{/cgi-bin/}{};

仅此而已。有关详细信息,请参阅。

虽然替换可以工作,但它很脆弱,很难扩展和维护。我极力推荐学习如何使用,而不是(本例中没有使用最后一个,但它很重要且相关)

my $new = $file->{srv_cgi_url};
$new =~ s{/cgi-bin/}{};
use warnings;
use strict;
use URI;

my $file;
$file->{srv_cgi_url} = "http://s1.site.com/cgi-bin/";

my $srv_cgi_uri = URI->new( $file->{srv_cgi_url} );

my $hash = "some";
my $fname = "path.ext";

$srv_cgi_uri->path("/dl.cgi/$hash/$fname");

print $srv_cgi_uri, "\n";

__END__
http://s1.site.com/dl.cgi/some/path.ext