use MyModule;my $var=MyModule->a.method.get;#MyModule::a.method.get() is Now defined
看来这些点是子程序名称中的非法字符:
#!/usr/bin/perluse warnings;use strict;sub mr.s{ print "OK\n";}mr.s();
分发
Illegal declaration of subroutine main::mr at main.pl line 5
那么,如何在子程序名称中启用点?
我理解,至少有些受访者可能会觉得不鼓励使用自动加载,以及尝试更改合法的子例程名称,而是提供更好的做法示例.我没有反对这些答案,也不认为它们的价值不高.不过,请尽量回答我原来的问题.
编辑:
为了澄清,最终目标是一个模块,当调用未定义的子例程时,它将根据其名称动态定义.为了实现这一点,我的意思是使用autoLOAD,其方式与this tutorial中使用的方式类似.
MyModule->a.method.get
实际上会被解释为
MyModule->a() . method() . get()总结
以上是内存溢出为你收集整理的perl – 如何在子程序名称中启用点(.)?全部内容,希望文章能够帮你解决perl – 如何在子程序名称中启用点(.)?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)