我真的很喜欢这方面的帮助,一个PERL-CGI脚本(下面是完整的工作脚本)。
如何将服务器的根文件夹(folder_f)添加到此:
~s / _e.shtml / _f.shtml /
这段代码搜索_e.shtml的所有出现并用_f.shtml替换它们(它在同一个文件夹中)。
然而,在这之间,我希望能够在那里添加服务器的“folder_f”文件夹的根目录,或者如果必须的话,可以采用其他方式。
我的脚本名为“change-language.pl” - 在“file_e.shtml”中有一个指向它的超链接。单击时,它将尝试查找文件“file_f.shtml”。
例如我希望它做什么:
~s / _e.shtml / (FOLDER_F) _f.shtml /(在下面的脚本中找到,但我添加了(FOLDER_F)。
我试过:$ calling_page = ~s / _e.shtml /'s / ^ / $。\ f'/ _ f.shtml /;
但它不起作用。它带我到同一个_e.shtml文件。
我真的很感激任何人对这个问题的帮助,因为到目前为止,我似乎无法做到这一点。
完整的脚本如下所示,但只有当两个语言文件(file_e.shtml和file_f.shtml)都位于同一文件夹中时才有效。我需要能够让脚本工作,以便它能找到文件(file_f.shtml)但在服务器根目录下的另一个子文件夹中名为“FOLDER_F”文件夹。
在$ calling_page = ~s / _e.shtml / _f.shtml /;部分脚本有没有办法:
$ calling_page = ~s / _e.shtml(FOLDER_F)/ _ f.shtml /; - FOLDER_F在括号中是我希望能够修改脚本以便它转到子文件夹并在FOLDER_F子文件夹中获取file_f.shtml的地方。
到目前为止我的工作是在WORKS之后,但只有在_e.shtml和_f.shtml文件都在同一个文件夹中时才有效:
#!/usr/bin/perl
#
#
# get the URL for the Web page that called this script
$calling_page = $ENV{'HTTP_REFERER'};
if($calling_page =~ /(.*)\#.*/) {
# # only take the first part up to the #
$calling_page = $1;}
# ignore any file that is not _e.shtml or _f.shtml and do nothing!
# is this an _e.shtml file?
if($calling_page =~ /_e\.shtml/) {
# replace the suffix
$calling_page =~ s/_e\.shtml/_f\.shtml/;
print "Location: $calling_page\n\n";
# then is this an _f.shtml file?
}
答案 0 :(得分:1)
如果我理解了你的描述,你想在URL中插入一个文件夹名称,如下所示:
http://domain.com/foo/bar.html -> http://domain.com/foo/folder_f/bar.html
如果是这种情况,那么您可以使用此正则表达式执行此操作:
$calling_page =~ s!/([^/]*)$!/folder_f/$1!;