【发布时间】:2021-02-01 09:19:52
【问题描述】:
我刚刚花了两天时间重新设计了一个 perl 脚本,它看起来非常好,但我有一个问题……用 perl 编写的日历。
我想防止用户发现我的脚本所在的实际文件夹,这是用 .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
我想替换为
$temper =~ s/<!../../filename>/$url/gm;
'filename' 是符号链接,浏览器地址栏将显示 domain.com/filename
编辑:TLP 感谢您的帮助,我不太擅长编码,尤其是 perl,但是当你们帮助我时,我学到了很多东西......就像你给了我信心,直到我得到对的!解决方案比我想象的要容易.....我不得不将/$url/gm;更改为/$xemail/gm;而不是替换<!--URL-->
现在效果很好!
【问题讨论】:
-
"如果我这样做,它会返回一个错误" -- 那么,错误是什么?显示您使用的确切代码,以及显示的确切错误。否则可以肯定地说没有人可以帮助您解决问题。
-
虽然看起来您确实试图在替换运算符中使用
/而没有转义它\/。 -
我很确定你的代码——顺便说一句你还没有显示——说
$temper =~ s/<!../linkname>/$url/gm,你可能会注意到/没有转义,这会导致你的替换运营商打破。导致奇怪的错误信息。 (l和a都在单词linkname中找到) -
即在 calendar.cgi 中显示第 43 行
-
谢谢,我现在就调查一下。我试图发布代码,但它不会让我!