我花了两天的时间重新模板化一个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;
其中“文件名”是符号链接,浏览器地址栏将显示domain.com/filename
编辑:TLP感谢您的帮助,我不太擅长编码,尤其是perl,但是当你们帮助我时,我学到了很多东西……就像您给我信心,直到我得到解决对的!该解决方案比我想象的要容易。...代替取代<!--URL-->
,我不得不将/$url/gm;
更改为/ $ xemail / gm;`
现在,它的工作非常出色!
答案 0 :(得分:1)
行
$temper =~ s/<!../../filename>/$url/gm;
无效,因为/
是替换运算符内的元字符。您必须像这样逃避它:
$temper =~ s/<!..\/..\/filename>/$url/gm;
或对替代运算符s///
使用不同的定界符。您可以为此使用几乎任何字符,例如|
:
$temper =~ s|<!../../filename>|$url|gm;
然后,您无需转义/
。