删除字符串的一部分 Perl

发布于 2024-11-28 15:58:17 字数 285 浏览 1 评论 0原文

中有这个

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

我在 perl where

$file->{srv_cgi_url}

returns

http://s1.site.com/cgi-bin/

,如何从字符串中删除尾随的 /cgi-bin/ ? :)

谢谢!

I have this in perl

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

where

$file->{srv_cgi_url}

returns

http://s1.site.com/cgi-bin/

how can I remove the trailing /cgi-bin/ from the string? :)

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只是偏爱你 2024-12-05 15:58:17

就像这样:

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

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

Like this:

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

That is all. See perldoc perlre for details.

若相惜即相离 2024-12-05 15:58:17

虽然替代可以发挥作用,但它很脆弱并且难以扩展和维护。我强烈建议学习使用 URIURI。 org/perldoc?URI%3a%3aQueryParam" rel="nofollow">URI::QueryParam 和 Path::Class 代替(最后一个在本例中未使用,但很重要且相关)。

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

While substitution can work, it’s fragile and difficult to extend and maintain. I strenuously recommend learng to use URI, URI::QueryParam, and Path::Class instead (the last is not used in this example but important and related).

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文