只是想知道在开发网站时测试Python CGI的最佳方法是什么?(我已经习惯了PHP for web dev所以请耐心等待:P)
我创建了自己的Perl模块.我从文件Config.pm中引用它.
当我从Perl模块中获取内容并将其复制到Config.pm时,脚本会被适当地触发.但是当我把它包括在内时:
use severalnines;
Kernel::severalnines::config_severalnines($Self);
Run Code Online (Sandbox Code Playgroud)
它没有被触发.我确信找到该文件是因为当我尝试更改文件名时,我收到错误(脚本标题的过早结束:).
这是我要包含在Config.pm中的文件(several nins.pm):
package Kernel::severalnines;
sub config_severalnines
{
$Self->{TicketAcl}->{'ACL-Name-Typer'} = {
Properties => {Frontend => {Action => ['CustomerTicketMessage']},
# current ticket match properties
CustomerUser => {
Group_rw => [ 'Incident Management Severalnines', ],
},
},
Possible => {
Ticket => {
Type => ['Incident',],},
},
};
}
1;
Run Code Online (Sandbox Code Playgroud)
onesnines.pm位于/usr/lib/perl5/5.12.3中,在执行perl -V时列出.
问题是什么?
先感谢您!
我试图从哈希中删除某些键/值对,但我得到全局符号需要显式包名异常,我不知道如何调试它.我读了一些解决方案,但似乎都没有.所以散列以这种方式声明:
my $hash = foo();
Run Code Online (Sandbox Code Playgroud)
然后我使用这行代码完成哈希:
while (my ($key, $value) = each %$hash)
Run Code Online (Sandbox Code Playgroud)
并在块中我选择我不想要的值并将这些值的键存储在一个声明为这样的数组中(当然循环之前):
my @keysArray = ();
Run Code Online (Sandbox Code Playgroud)
然后我访问该数组以使用此代码检索密钥,以便我可以从哈希中删除它们:
for my $key (@keysArray){
delete $hash{$key};# this line of code is causing the problem
}
Run Code Online (Sandbox Code Playgroud)
我写的最后一行是导致全局符号"%hash"需要显式包名异常的行.
任何修复或我在这里做错了什么.
PS我更改了变量名并删除了其他内部代码,但格式相同.
请帮忙!谢谢.
我有一个Perl CGI脚本,当我从命令行运行它时工作正常./roster_return.cgi StudentID=101095但是当我在MAMP中运行它时(http://localhost:8888/cgi-bin/roster_return.cgi?StudentID=101095),我的apache日志中出现以下错误:
[Wed May 02 10:56:47 2012] [error] [client 127.0.0.1] install_driver(mysql) failed: Can't load '/Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle' for module DBD::mysql: dlopen(/Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle, 1): Library not loaded: libmysqlclient.18.dylib
[Wed May 02 10:56:47 2012] [error] [client 127.0.0.1] Referenced from: /Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle
[Wed May 02 10:56:47 2012] [error] [client 127.0.0.1] Reason: image not found at /System/Library/Perl/5.10.0/darwin-thread-multi-2level/DynaLoader.pm line 207.
[Wed May 02 10:56:47 2012] [error] [client 127.0.0.1] at (eval 11) line 3
[Wed May 02 10:56:47 2012] [error] [client 127.0.0.1] Compilation failed in …Run Code Online (Sandbox Code Playgroud) 我正在写一个perl cgi应用程序.在某些时候,这个cgi应用程序需要以root身份运行才能访问并写入特定文件.我想知道我应该怎么做以及在做这件事时我应该采取的安全预防措施.
有人可以向我解释让perl在服务器上工作的基本知识.我需要服务器上的模块吗?如果是这样的话呢?我如何命名我的文件以及它们去了哪里?
根据我的理解,你需要一个模块,它进入cgi-bin.我无法得到一个明确的答案,我是否命名文件.pl或.cgi,当我把它放在cgi-bin中时,我收到服务器错误.我也将我的权限设置为777,所以这不应该是问题.
请帮忙!我只想了解如何使基本程序正常工作,如下所示.提前致谢!
#!/usr/bin/perl
require("cgi-lib.pl");
print &PrintHeader;
print "<html>";
print "<head><title>Hello world!</title></head>";
print "<body>";
print "<p>Hello world!</p>";
print "</body>";
print "</html>";
Run Code Online (Sandbox Code Playgroud) 这对我来说已经成了问题好几天了,我确实能够解决它.
我正在使用fedora 14并使用Apache/2.2.17(Unix)
文档根目录是/ var/www,它在我的httpd.conf中配置得很好
我在/ var/www中有几个文件夹,其中包含需要运行CGI的perl文件,而有时perl文件是作为下载提供的,有时会出现错误500
内部服务器错误
服务器遇到内部错误或配置错误,无法完成您的请求.
请联系服务器管理员root @ localhost并告知他们错误发生的时间,以及可能导致错误的任何操作.
服务器错误日志中可能提供了有关此错误的更多信息.
正在加载cgi_module,即使我使用ScriptAlias和目录标记,该文件仍然没有运行脚本.
我甚至试图创建一个虚拟主机,它不起作用.
例如,如果我想在apache根目录(/ var/www)中找到一个名为"pyl"的目录,那么httpd.conf的行是什么?
我有一个cgi脚本,我需要能够解析Linux文件权限.问题是,如果权限以"764"形式出现,则将其视为perl中的基数10标量.换句话说,它在八进制中表示为1374,而在八进制中表示为764.我不确定要调用的转换例程,将var作为字符串并将其转换为八进制?如果你使用sprintf,它将给出错误的结果,因为它将返回1374,我上面显示的八进制转换.
我试图从一个看起来像cs600032016s的代码中提取年份.年份从索引7到10,但只是为了概括它前面的代码的可变长度,我使用了以下代码:
$year = substr($code, $len-5, $len-1);
Run Code Online (Sandbox Code Playgroud)
但它给了我2016s而不是2016年.任何想法错误的地方?更改$len-1到$len-2或$len-3没有给出改变输出.这很奇怪.这是代码:
sub getCCodeFromCode{
my ($code) = @_;
my $len = length($code);
return substr($code, 0 , $len-5); #4 char for year and one for sem
}
sub getYearFromCode{
my ($code) = @_;
my $len = length($code);
# print "substr($code, $len-5, $len-1)";
return substr($code, $len-5, $len-1);
}
sub getSemFromCode{
my ($code) = @_;
my $len = length($code);
return substr($code, $len-1);
}
my %hashmap = &getCourseList;
#my …Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的Perl脚本,它可以在终端上正常运行,但是当作为CGI脚本运行时,会产生垃圾。该脚本基本上采用HTML实体编码的数据,并将其转换为打印数据。我已经尝试了所有不同的设置,例如使用“编码”来更改输出并将STDOUT设置为utf8模式,但这没有帮助。我还尝试过更改CGI的环境,以查看事情是否会像终端环境一样工作。仍然没有运气。
这是脚本
#!/usr/bin/perl
use HTML::Entities qw(encode_entities_numeric decode_entities);
use Encode qw/encode decode/;
binmode(STDOUT, ":utf8");
#$ENV{'PERL_UNICODE'} = 'D';
#$ENV{'LANG'} = 'en_US.UTF-8';
#$ENV{'TERM'} = 'vt100';
#$ENV{'SHELL'} = '/bin/bash';
#binmode(STDOUT, ":utf8");
print "Content-type: text/html\n\n";
my $y = decode_entities("Συστήματα_&#x
391;νίχνευσης_Εισ.pd
f");
#print encode("UTF8",$y);
print $y;
Run Code Online (Sandbox Code Playgroud)
终端上的输出很干净,就像perl test.pl内容类型:text / html
?????????? _ ???????????? _ ???。pdf
但是在CGI打印中,它是乱码的…
我有点困惑,因为我找不到任何简单的方法来解决这个问题。尝试了变量的“ encode_utf8”和utf8 :: upgrade,但还是没有运气。任何人在这里的经验都会有很大帮助!
谢谢维杰