有没有办法在命令行验证perl mason语法?我知道你可以使用的常规perl模块perl -c,但是这会引起像docstrings之类的特定于mason的语法的错误......
例如:
<%doc>
DOCUMENTATION SHOULD NOT GET PARSED
</%doc>
<%args>
$args
</%args>
<%perl>
my $var = $args->{var};
</%perl>
Run Code Online (Sandbox Code Playgroud)
是一个有效的perl mason文件,但是perl -c对它运行会返回:
Semicolon seems to be missing at path/to/file.mc line 1.
syntax error at path/to/file.mc line 2, near "DOCUMENTATION S"
path/to/file.mc had compilation errors.
Run Code Online (Sandbox Code Playgroud) 如果这些块存在于Mason组件中,那么执行顺序是什么?
%args%init%once%shared%attr%flags我正在使用Perl 5.10,HTML :: Mason和apache 2.2 开发应用程序.这是我第一次将Perl 5.10用于大型项目.我偶尔会有一种奇怪的行为.该应用程序死于一个非常奇怪的错误:
panic: attempt to copy value
to a freed scalar b87acf34 at ...
Run Code Online (Sandbox Code Playgroud)
我想我的问题是Perl 5.10因为我以前从未经历过这种情况,还是其他一些错误的依赖?
非常感谢!
我在Ubuntu 10.10(x86)上使用mod_perl 2,mason和apache 2.2(来自apt的标准包).当我向服务器发送HTTP请求时,我得到以下内容:
$ nc localhost 80 < ~/Desktop/test.http
HTTP/1.1 200 OK
Date: Mon, 22 Nov 2010 00:32:02 GMT
Server: Apache/2.2.16 (Ubuntu)
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html
38
<html><body>Current IP Address: 127.0.0.1</body></html>
0
Run Code Online (Sandbox Code Playgroud)
我对此有点好奇.这些数字(38和0)是什么意思?我查看了我的日志,但我没有看到任何有意义的内容,我似乎无法找出谷歌的最佳搜索短语(如果我遗漏了文档中明显的内容,我很抱歉).我从telnet获得相同的结果(但Firefox似乎没有抛出任何类型的错误).
这是我的请求的内容(在末尾省略空格):
GET /test.html HTTP/1.1
HOST: example.com
Run Code Online (Sandbox Code Playgroud)
和我的脚本(test.html):
% my $ip = $r->connection->remote_ip();
<html><body>Current IP Address: <% $ip %></body></html>
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我正在写一个Mason 1.x组件页面,它的表现并不像我期待的那样.perlsub手册页指示my变量应该在a中可访问sub.但是以下代码:
my @myOrderBy = @orderBy;
sub sortAll
{
my $ret = 0;
foreach my $sortStr (@myOrderBy)
{
}
}
Run Code Online (Sandbox Code Playgroud)
给我错误:
编译/opt/rt4/local/plugins/RTx-Foo/html/cf/helpers/ticketQuery.ajx时出错:/ opt/rt4/local/plugins/RTx-Foo/html中没有变量"@myOrderBy" /cf/helpers/ticketQuery.ajx第206行.
(第206行是该foreach行)
相同的代码在非Mason上下文中正常工作.
以下perl/mason命令之间的区别是什么.
$ test = $ test1; $ test => $ test1;
具体如何实例化在这里工作?
我有一个perl mason文件,其中一行看起来像这样:
$result = PI::Membership::Service->cancel(name => $name)
Run Code Online (Sandbox Code Playgroud)
这到底是什么意思呢?它是在调用另一个模块吗?它是面向对象的perl代码吗?
谢谢