是否可以在perl中用符号链接替换网址?

时间:2020-10-18 12:06:16

标签: html perl

我花了两天的时间重新模板化一个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;` 现在,它的工作非常出色!

1 个答案:

答案 0 :(得分:1)

$temper =~ s/<!../../filename>/$url/gm;

无效,因为/是替换运算符内的元字符。您必须像这样逃避它:

$temper =~ s/<!..\/..\/filename>/$url/gm;

或对替代运算符s///使用不同的定界符。您可以为此使用几乎任何字符,例如|

$temper =~ s|<!../../filename>|$url|gm;

然后,您无需转义/