저는 펄 스크립트를 다시 템플릿하는 데 이틀을 보냈고 멋지게 보이지만 한 가지 문제가 있습니다. 펄로 작성된 달력입니다. 사용자가 .htacces로 수행되는 내 스크립트가있는 실제 폴더를 발견하지 못하도록하고 싶습니다. 따라서 html에서는 쉽게 바꿀 수 있습니다. <!--URL--> with <!../linkname>
그러나 달력 날짜와 월은 perl 스크립트 인 calendar.cgi를 통해 표시됩니다. 사용자가 하루 또는 한 달 동안 캘린더 메인 페이지로 이동해야하지만 전체 URL을 통해 이동합니다. html 페이지의 심볼릭 링크를 사용하여 domain.com/filename을 domain.com/cgi-bin/folder1/folder2로 이동할 수 있으며 브라우저에는 domain.com/filename 만 URL로 표시되지만 달력 날짜 / 월은 Perl로 작성되었으므로 :
문제가되는 라인은 $temper =~ s/<!--URL-->/$url/gm;
어떻게 바꿀 수 있습니까? $temper =~ s/<!--URL--> with <!../linkname>?
html과 같은 방식으로 수행하면 오류가 반환됩니다.
편집 : 오류 코드
정규식 수정 자 "/ a"및 "/ l"은 /home/public_html/cgi-bin/messenger/calendar.cgi 43 행에서 상호 배타적이며 / home / public_html / cgi-bin / messenger의 "= ~"구문 오류 근처에 있습니다. /calendar.cgi 43 행, "{.."근처의 컴파일이 /home/public_html/cgi-bin/messenger/messenger.cgi 36 행에서 필요에 실패했습니다.
편집, 43 행 : 이것은 원래 43 행입니다.
$temper =~ s/<!--URL-->/$url/gm;
그러나 그러면 링크가 public_html/cgi-bin/folder/folder
I want to replace with
$temper =~ s/<!../../filename>/$url/gm;
여기서 'filename'은 심볼릭 링크이고 브라우저 주소 표시 줄에는 domain.com/filename이 표시됩니다.
편집 : TLP는 도움을 주셔서 감사합니다. 저는 코딩에 능숙하지 않습니다. 특히 펄은 아니지만 여러분이 나를 도와 줄 때 많은 것을 배웁니다 .... 정확히 얻을 때까지 나에게 자신감을주는 것과 같습니다! 해결책은 생각보다 쉬웠습니다 ..... 교체하는 대신 / $ xemail / gm;` <!--URL-->
로 변경 /$url/gm;
해야했습니다 .` 이제 훌륭하게 작동합니다!
라인
$temper =~ s/<!../../filename>/$url/gm;
은 ( /
는) 대체 연산자 내부의 메타 문자 이므로 유효하지 않습니다 . 다음과 같이 이스케이프해야합니다.
$temper =~ s/<!..\/..\/filename>/$url/gm;
또는 대체 연산자에 대해 다른 구분 기호를 사용하십시오 s///
. 예를 들어 |
다음 과 같이 거의 모든 문자를 사용할 수 있습니다 .
$temper =~ s|<!../../filename>|$url|gm;
그러면 탈출 할 필요가 없습니다 /
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다