\ 1을 $ 1과 반대로 실행하는 것과 다른 점은 무엇이 있습니까? 아니면 모든 상황에서 교환 할 수 있습니까?
예 : 그들은 모두 같은 결과를 제공하지만, 어떤 차이가
s/([a-z]+),afklol/$1,bck/;
#against
s/([a-z]+),afklol/\1,bck/;
?
\ 1을 $ 1과 반대로 실행하는 것과 다른 점은 무엇이 있습니까? 아니면 모든 상황에서 교환 할 수 있습니까?
예 : 그들은 모두 같은 결과를 제공하지만, 어떤 차이가
s/([a-z]+),afklol/$1,bck/;
#against
s/([a-z]+),afklol/\1,bck/;
?
스트레이트 perldoc perlre에서 :
$pattern =~ s/(\W)/\\\1/g;
이것은의 RHS에 대한 예외 적용된된다
경고 대 1 \에 $ 1
어떤 사람들은 너무 같은 필기구에 익숙해 대신에 sed 중독자에게 충격을주지 마십시오. 을 얻는 것은 더러운 습관입니다. 왜냐하면 PerlThink에서 "s ///"의 오른쪽은 큰 따옴표로 묶인 문자열이기 때문입니다. 큰 따옴표로 묶인 문자열에서 "\ 1"은 제어 A를 의미합니다. "\ 1"의 을 의미하는 일반 유닉스는 "s ///"에서 kludged됩니다. 그러나 습관에 빠지면 수식어를 추가하면 "/ e" 수식어가 추가됩니다.
s/(\d+)/ \1 + 1 /eg; # causes warning under -w
아니면
s/(\d+)/\1000/;
을하려고하면 당신은 "{1} 000", 당신은 으로 문제를 해결할 수있는 반면 "$ {1} 000" 을 말함으로써 그 모호성을 수 없습니다 . 보간 작업은 역 참조와 일치하는 작업과 함께 과 혼동해서는 안됩니다.
분명히 "s ///"의 왼쪽에는 두 개의 서로 다른 가지를 의미합니다.
그들은 같은 결과를 주지만, \ 1은 그 값을 유지하지만 \ 1은 그렇지 않습니다. 이 시도 : 난 단지 내가 패턴의 이전 부분의 반복을 포함하는 경기를 필요로하는 드문 경우에 \1
를 사용
s/([a-z]+),afklol/$1,bck/;
print "\$1 is $1\n";
#against
s/([a-z]+),afklol/\1,bck/;
print "\\1 is \1\n";
m // 또는 s /// \ 1 외부는 역 참조가 아니기 때문입니다. (실제 내용은 상황에 따라 다릅니다.) –