코드는 다소 복잡한 코드입니다 만 조금 단순화했습니다. 나는 이것을 쉽게 할 수 있다는 것을 안다 :Perl s /../../ 예상대로 작동하지 않습니다.
$svn_module s#.*/##;
그리고 모듈의 끝 부분 만 잡아 당기십시오. 나머지
DEBUG: svn_module = "http://svn.vegicorp.net/svn/trunk/SessionController"
DEBUG: svn_module = "SessionController"
왜 대체 식 trunk/
을 제거 않지만,하지 : 나는 기다리고 있었다, 그러나
DEBUG: svn_module = "http://svn.vegicorp.net/svn/trunk/SessionController"
DEBUG: svn_module = "http://svn.vegicorp.net/svn/SessionController"
을 :
#! /usr/bin/env perl
use strict;
use warnings;
my $svn_module = "http://svn.vegicorp.net/svn/trunk/SessionController";
print qq(DEBUG: svn_module = "$svn_module"\n);
$svn_module =~ s#^.*(branches/.+?/)|(trunk)/##;
print qq(DEBUG: svn_module = "$svn_module"\n);
이 인쇄 :하지만 뭔가 이상한 일이 일어나고있다 최대 문자열 trunk/
까지? 괄호의 추가 세트를 추가하는 방식으로
$svn_module =~ s#^.*((branches/.+?/)|(trunk))/##;
가 작동합니다.
그건 그렇고, 이것은 펄 5.8.8입니다. 이 서버는 서버이며 꽤 많이 버금가는 버전입니다.
네가 내 질문에 대답했는지 아닌지 잘 모르겠다. 분명히 추가 세트 나 괄호가 작동했습니다. 그러나 당신의 대답을 읽은 후에, 나는 이해한다고 생각합니다. 나는 기본적으로'^. * branches /.+?/' 또는'trunk'와 일치한다고 말했습니다. 내가 생각한 것처럼 전체 문자열을 처음부터 '트렁크'까지 일치시키는 것은 아닙니다. –
@DavidW. correct – ysth