加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 在调用模块方法时传递的模块引用

发布时间:2020-12-16 06:09:58 所属栏目:大数据 来源:网络整理
导读:我有一个名为fetch.pl的perl脚本和一个名为My_Util.pm的模块. My_Util.pm package My_Util;sub get_header{ my $msg = shift; return " ===== $msg ===== ";}1; # Perl modules must return a true value when loaded. fetch.pl use My_Util;print_and_log(M
我有一个名为fetch.pl的perl脚本和一个名为My_Util.pm的模块.

My_Util.pm

package My_Util;

sub get_header
{
    my $msg = shift;
    return " ===== $msg ===== ";
}

1; # Perl modules must return a true value when loaded.

fetch.pl

use My_Util;

print_and_log(My_Util->get_header("foo"));
print_and_log("blah");

sub print_and_log
{
    my $message = shift;
    print("$messagen");
}

预期产出:

===== foo =====
blah

实际产量:

===== My_Util =====
blah

编辑:修复了语法错误

解决方法

– > get_header语法是方法调用的语法.方法调用将调用者(即对象或类名)作为隐式的第一个参数传递.

所以,假设我们有

package MyUtil;
sub foo {}

在某个地方,电话

MyUtil->foo(1,2,3)

最终做了MyUtil :: foo(“MyUtil”,1,3).

你当然可以打电话

MyUtil::foo(1,3)

直接不传递任何隐式参数.

另见perldoc perlobj.

另一个区别是:: version执行正常的函数调用,而 – > version执行方法调用,也遵循继承,即使用MyUtil-> foo,如果MyUtil继承自提供foo方法的类,则根本不需要MyUtil :: foo sub.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读