Удалить часть строки Perl - PullRequest
2 голосов
/ 10 августа 2011

У меня есть это в Perl

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

, где

$file->{srv_cgi_url}

возвращает

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

как я могу удалить конечный / cgi-bin / из строки? :)

Спасибо!

Ответы [ 2 ]

1 голос
/ 10 августа 2011

Хотя замена может работать, она хрупкая и ее трудно расширять и поддерживать. Я настоятельно рекомендую учиться использовать URI , 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
1 голос
/ 10 августа 2011

Как это:

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

Вот и все. Подробнее см. perldoc perlre .

...