“本地我们的”是在 mod_perl2 下的对象模块中使用的东西,还是只在脚本中使用?

Posted

技术标签:

【中文标题】“本地我们的”是在 mod_perl2 下的对象模块中使用的东西,还是只在脚本中使用?【英文标题】:Is "local our" the thing to use in object modules under mod_perl2, or only in scripts? 【发布时间】:2010-10-05 05:12:19 【问题描述】:

为了使您的脚本适合 mp2,避免需要任何兼容性包装器等,据说您应该使用“local our”而不是“my”来声明变量。在模块中呢?

sub new

    local our $type = shift;
    local our $self = ;
    bless $self, $type;

对吗?还是应该是“我的”,以便模块的其余部分可以在“使用严格”下获得 $self?

【问题讨论】:

【参考方案1】:

你肯定需要my

local our 建议与模块中的全局变量有关。

【讨论】:

所以一直以来,故事的寓意应该是,全局变量是邪恶的?【参考方案2】:

$self 也可以在方法中以 $_[0] 的形式获得(Perl 会自动在 @_ 前面加上它。)

【讨论】:

将此添加到问题中。然后删除这个“答案”。 这是对“或者应该是“我的”以便模块的其余部分可以在“使用严格”下获得 $self 的答案?询问后才发现。 请不要使用 $_[0]。我建议永远不要这样做,但可能会有例外。无论如何不要为了 mod_perl 而使用它。 我的意思是它是第一个元素。你可以使用移位。但是,我很好奇,你为什么这么说?不是比换班更有效率吗?你还没有说是什么不利因素促使你推荐。 哦。我认为这很明显: 1. 很难看。非常难看。 2. 很难打字。 3. 很难阅读(这是一种方法,因此 $_[0] 是自我吗?或者这完全是另外一回事)。 4.其他方法更改@_时可能会触发奇怪的小错误。【参考方案3】:

local our 是一个丑陋的结构,从长远来看会咬你。

有关详细信息,请参阅 Perlmonks 上的 thread。

【讨论】:

我无法完全理解接下来的讨论;但是,两年后指南仍然包含它,所以也许他没有赢得讨论列表的争论? 事实证明,即使是 Stas Bekman 也同意 (nabble.com/local-our-td6489165.html)...我想知道为什么这些文档从未更新过? :| 这是一个非常好的问题。我知道我已经在各种列表中看到过关于它的主题...

以上是关于“本地我们的”是在 mod_perl2 下的对象模块中使用的东西,还是只在脚本中使用?的主要内容,如果未能解决你的问题,请参考以下文章

binmode + mod_perl 2.0.5 + Parse::RecDescent = 分段错误

在 mod_perl 2 下关闭响应

在 mod_perl2 中修改 POST 请求

如何在 OS X Yosemite 上的 Apache 2.4 中安装 mod_perl 2.0.9?

如何在 mod_perl2 下运行 Devel::Cover?

如何在不重新启动的情况下调试 mod_perl2 模块?