펄 스크립트 입문. 무엇을하는지 이해하려고 시도 : S이 perl 스크립트는 어떤 기능을합니까? 까다로워 보인다.
@prefixes = ("ROOT1", "ROOT2");
$path = <>;
foreach my $prefix (@prefixes) {
if($path =~ /\/$prefix\/(.*?)(\/|$)/) {
print "$1\n";
last;
}
}
펄 스크립트 입문. 무엇을하는지 이해하려고 시도 : S이 perl 스크립트는 어떤 기능을합니까? 까다로워 보인다.
@prefixes = ("ROOT1", "ROOT2");
$path = <>;
foreach my $prefix (@prefixes) {
if($path =~ /\/$prefix\/(.*?)(\/|$)/) {
print "$1\n";
last;
}
}
경로가 시작되면 각 접두사
$path = <>;
, 그것은 검사 디렉토리 이름은 접두사와 같습니다.
if($path =~ /\/$prefix\/(.*?)(\/|$)/) {
동시에 접두사 ((.*?)
) 다음의 슬래시까지 또는 끝까지 ((\/|$)
)까지 수집합니다. 경로 접두사 일치하는 경우, 수집 된 부분을 출력하고 루프 종료 :
print "$1\n";
last;
그래서, 짧은에,이 경로를 일치하는 첫 번째 접두사를 찾습니다, 그리고 경로의 일부가 다음 인쇄 접두사.
편집 : "마지막 슬래시까지"-> "다음 슬래시까지"
ROOT1 또는 ROOT2 이전 입력의 다음 디렉토리를 인쇄합니다. 예 : 그런 다음 표준 입력 경로 판독
@prefixes = ("ROOT1", "ROOT2");
: 그것은 소정 프리픽스들의 어레이 세트
/ROOT1/x/y -> x
/ROOT1/z -> z
/ROOT2/bla -> bla
x/ROOT2/y/z -> y
ROOT1/x ->
/bla/x ->
감사합니다 상세한 답변. ($ path = ~/\ /$prefix\/((())(\/|$)/) {ROOT1 (ROOT1/a/b)에서 두 번째 디렉토리를 가져 오려면 b로 변경하십시오. – Decrypter
두번째 디렉토리를 얻으려면, 정규 표현식은 다음과 같습니다 :'/ \/$ prefix \ /.*? \/(. *?) (\/| $) /' –
. 괄호는 변수에 할당한다는 의미입니까? 그래서 /\/$prefix\/((y))\/(.*?)(\/|$)/ 첫 번째 디렉토리 (a)는 $ 1이고 두 번째 (b)는 $ 2가됩니다. – Decrypter