帮助脚本,从不同的子文件夹链接到文件

时间:2011-09-12 14:00:48

标签: perl cgi append

我真的很喜欢这方面的帮助,一个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?

}

1 个答案:

答案 0 :(得分:1)

如果我理解了你的描述,你想在URL中插入一个文件夹名称,如下所示:

http://domain.com/foo/bar.html -> http://domain.com/foo/folder_f/bar.html

如果是这种情况,那么您可以使用此正则表达式执行此操作:

$calling_page =~ s!/([^/]*)$!/folder_f/$1!;