2011-08-10 136 views
2

我在perl字符串的刪除部分的Perl

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

其中

$file->{srv_cgi_url} 

回報

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

我怎麼能刪除尾隨/ cgi-bin目錄從字符串/ ? :)

謝謝!

回答

1

像這樣:

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

這是所有。詳情請參閱perldoc perlre

1

雖然替代可以工作,但它很脆弱,難以擴展和維護。我強烈建議學習者使用URI,URI::QueryParamPath::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