perl – 如何在子程序名称中启用点(.)?
发布时间:2020-12-16 06:06:02 所属栏目:大数据 来源:网络整理
导读:我正在使用自动加载创建一个带动态访问器的模块.被调用的方法名称中将包含一个或多个点.用法示例: use MyModule;my $var=MyModule-a.method.get;#MyModule::a.method.get() is now defined 看来这些点是子程序名称中的非法字符: #!/usr/bin/perluse warnin
我正在使用自动加载创建一个带动态访问器的模块.被调用的方法名称中将包含一个或多个点.用法示例:
use MyModule; my $var=MyModule->a.method.get; #MyModule::a.method.get() is now defined 看来这些点是子程序名称中的非法字符: #!/usr/bin/perl use warnings; use strict; sub mr.s { print "OKn"; } mr.s(); 分发 Illegal declaration of subroutine main::mr at main.pl line 5 那么,如何在子程序名称中启用点? 我理解,至少有些受访者可能会觉得不鼓励使用自动加载,以及尝试更改合法的子例程名称,而是提供更好的做法示例.我没有反对这些答案,也不认为它们的价值不高.不过,请尽量回答我原来的问题. 编辑: 解决方法
你是对的,这个点在子程序名称中是非法的.这与自动加载无关,它们只是非法的.一个点用于字符串连接,所以你的例子
MyModule->a.method.get 实际上会被解释为 MyModule->a() . method() . get() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |