如何用 Mason 定义全局变量

Posted

技术标签:

【中文标题】如何用 Mason 定义全局变量【英文标题】:How to define a global variable with Mason 【发布时间】:2011-09-16 10:55:28 【问题描述】:

简介

我尝试在我的 Ubuntu 桌面上设置 mason。 这是一个非常简单的设置,但我仍然有问题,阅读后 masonbook.com 和 mansonhq.com 的部分内容 希望有人能给我一个提示。请参阅下文了解更多详情。

本地服务器

Ubuntu 11.04 桌面 Mason 1.44(Ubuntu 自带) perl/mason 新手

文件

mason.seedy2 - 这是一个 cgi 脚本。基本上,我设置了一个全局变量 --> $user.我想在 index1.html 中使用它 index1.html - 简单的 html 文件 apache.conf - 我不确定我做对了

错误

1. 在浏览器中输入 http://localhost:81/index1.html 2. 错误:编译/var/www/test/sj3/public_html/index1.html时出错: 全局符号“$user”需要在 /var/www/test/sj3/public_html/index1.html 第 2 行显示包名。 语境: 1:

2: 3:

4: 代码栈:/usr/share/perl5/HTML/Mason/Interp.pm:450 /usr/share/perl5/HTML/Mason/Request.pm:249 /usr/share/perl5/HTML/Mason/Request.pm:212 /usr/share/perl5/HTML/Mason/ApacheHandler.pm:94 /usr/share/perl5/Class/Container.pm:275 /usr/share/perl5/Class/Container.pm:353 /usr/share/perl5/HTML/Mason/Interp.pm:348 /usr/share/perl5/HTML/Mason/ApacheHandler.pm:874 /usr/share/perl5/HTML/Mason/ApacheHandler.pm:828 (评估 34):8 -e:0

apache.conf

# 监听其他端口 听 81 ServerAdmin webmaster@localhost DocumentRoot /var/www/test/sj3/public_html PerlSetVar MasonCompRoot /var/www/test/sj3/public_html/ PerlSetVar MasonDataDir /var/www/test/sj3/mason/ 动作 html-mason /cgi-bin/mason.speedy2 SetHandler perl 脚本 PerlHandler HTML::Mason::ApacheHandler

index1.html

打印%用户

mason.speedy2

#!/usr/bin/perl -w 使用严格; 使用 HTML::Mason::CGIHandler; 我们的($用户,%会话); $user = "bla"; 我的 $h = HTML::Mason::CGIHandler->new ( data_dir => "$ENVDOCUMENT_ROOT/../mason", allow_globals => [qw(%session $user)], ); $h->handle_request;

【问题讨论】:

@mob:这是答案,不是评论 虽然不是一个好的答案——错误消息是关于 $user 未声明。这篇文章中可能有一两个错字。 【参考方案1】:

如果必须有site wide globals,则在apache处理程序中用allow_globals声明它们,并在根级别autohandler初始化它们。

【讨论】:

【参考方案2】:

    print %user 是一个错字。它应该是 $user。

    daotoad 的建议不错,但是修改现有的代码要花点时间

    以前的程序员有“/cgi-bin/mason.speedy2”包含所有的全局变量和包,然后在apache.conf中嵌入/cgi-bin/mason.speedy2(即类似于在自动处理程序)。 4. 我的问题:/cgi-bin/mason.speedy2 正在运行吗?如果是运行,为什么没有定义全局变量$user?

【讨论】:

以上是关于如何用 Mason 定义全局变量的主要内容,如果未能解决你的问题,请参考以下文章

在jsp中的局部和全局变量

在jsp中的局部和全局变量

js如何在方法内部定义全局变量

如何用Vue对全局变量做出反应?

如何用eval()函数在局部函数内改变全局变量

c语言一个结构体如何在多个源文件里面调用?