问题标签 [perl-stash]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
322 浏览

perl - 在 Perl 中,有什么方法可以绑定存储?

类似于AUTOLOAD可用于按需定义子例程的方式,我想知道是否有一种方法可以绑定包的存储,以便我可以拦截对该包中变量的访问。

我已经尝试了以下想法的各种排列,但似乎都没有奏效:

这在最后一行消失Bad symbol for scalar ...,没有打印"calling fetch"。如果say $Target::x;删除该行,程序将正常运行并退出。

我的猜测是,失败与 stash 类似,但与哈希不同,因此标准的 tie 机制无法正常工作(或者可能只是 stash 查找永远不会调用 tie 魔法)。

有谁知道这是否可能?纯 Perl 最好,但 XS 解决方案还可以。

0 投票
4 回答
286 浏览

perl - 在 Perl 中,直接全局别名和通过 stash 别名之间有什么区别吗?

在 Perl 中,以下两种结构之间是否有任何区别:

它们似乎具有相同的功能(将所有插槽别名为 中*main::foo定义的插槽*main::bar),但我只是想知道这种等效性是否始终成立。

0 投票
0 回答
1142 浏览

perl - Mojolicious 模板访问由控制器设置的存储值

我对 Mojolicious 还很陌生。我尝试在文档、StackOverflow 和在线示例中对此进行研究。我还没有找到合适的答案。希望有人可以帮助我。

我有一个控制器方法/操作,应该显示用户的个人资料和帐户数据。在该方法中,我从数据库中提取 User 和 Account 对象,并将它们推送到 stash 中,以便模板可以访问它们。我曾经Dumper确保它们存在于存储预渲染时间。

控制器动作MyApp::User

然而,一旦我点击了模板,我填充到存储中的任何内容都仍然存在。

占位符/测试模板:user/show_public_profile.html.ep

不幸的是,模板的存储版本中不存在插入的“用户”和“帐户”值:

关于我做错了什么的任何线索,在这里?我使用的是完整的 Mojolicious,而不是大多数示例引用的 Mojolicious::Lite。而且,我已经尝试了我能找到的示例代码的每一种排列方式。我错过了什么?

谢谢!

0 投票
1 回答
652 浏览

perl - 如何在不影响主包的情况下为长包名起别名?

如果我有一个非常长的包名,我可以通过在符号表中创建一个条目来为该包起别名:

这就是类似的东西Package::Alias在内部为您所做的事情。但是,这很臭,因为它与main包装一起弄脏了。如何使别名仅影响当前包,并且只能在包中使用别名?我尝试将别名定义更改为

但后来我必须使用Short::Alias->myMethod()而不是仅仅使用Alias->myMethod().


如果两者都Alias->myMethod()Alias::myMethod()包中工作Short,而不是在main.