问题标签 [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.
perl - 在 Perl 中,有什么方法可以绑定存储?
类似于AUTOLOAD
可用于按需定义子例程的方式,我想知道是否有一种方法可以绑定包的存储,以便我可以拦截对该包中变量的访问。
我已经尝试了以下想法的各种排列,但似乎都没有奏效:
这在最后一行消失Bad symbol for scalar ...
,没有打印"calling fetch"
。如果say $Target::x;
删除该行,程序将正常运行并退出。
我的猜测是,失败与 stash 类似,但与哈希不同,因此标准的 tie 机制无法正常工作(或者可能只是 stash 查找永远不会调用 tie 魔法)。
有谁知道这是否可能?纯 Perl 最好,但 XS 解决方案还可以。
perl - 在 Perl 中,直接全局别名和通过 stash 别名之间有什么区别吗?
在 Perl 中,以下两种结构之间是否有任何区别:
和
它们似乎具有相同的功能(将所有插槽别名为 中*main::foo
定义的插槽*main::bar
),但我只是想知道这种等效性是否始终成立。
perl - Mojolicious 模板访问由控制器设置的存储值
我对 Mojolicious 还很陌生。我尝试在文档、StackOverflow 和在线示例中对此进行研究。我还没有找到合适的答案。希望有人可以帮助我。
我有一个控制器方法/操作,应该显示用户的个人资料和帐户数据。在该方法中,我从数据库中提取 User 和 Account 对象,并将它们推送到 stash 中,以便模板可以访问它们。我曾经Dumper
确保它们存在于存储预渲染时间。
控制器动作MyApp::User
然而,一旦我点击了模板,我填充到存储中的任何内容都仍然存在。
占位符/测试模板:user/show_public_profile.html.ep
不幸的是,模板的存储版本中不存在插入的“用户”和“帐户”值:
关于我做错了什么的任何线索,在这里?我使用的是完整的 Mojolicious,而不是大多数示例引用的 Mojolicious::Lite。而且,我已经尝试了我能找到的示例代码的每一种排列方式。我错过了什么?
谢谢!
perl - 如何在不影响主包的情况下为长包名起别名?
如果我有一个非常长的包名,我可以通过在符号表中创建一个条目来为该包起别名:
这就是类似的东西Package::Alias
在内部为您所做的事情。但是,这很臭,因为它与main
包装一起弄脏了。如何使别名仅影响当前包,并且只能在包中使用别名?我尝试将别名定义更改为
但后来我必须使用Short::Alias->myMethod()
而不是仅仅使用Alias->myMethod()
.
如果两者都和Alias->myMethod()
在Alias::myMethod()
包中工作Short
,而不是在main
.