好用的Perl包 Class::Ref

包的链接 https://metacpan.org/pod/Class::Ref

网页上介绍是 Class::Ref - Automatic OO wrapping of container references
就是将一个哈希、数组引用到一个 package 中来使用。

下面给出一个例子:

#!/usr/bin/perluse FindBin qw($RealBin);
use lib "$RealBin/lib";
use lib "$RealBin";use Class::Ref;# example 1
### creat a hash
$test = { foo => { bar => 'Hello World!' } };$obj = Class::Ref->new($test);
print $obj->foo->bar . "\n";    # returns "Hello World!"
$obj->baz({ blah => 123 });
print $obj->baz->blah . "\n";    # returns 123#example 2
$group1 = { foo => { bar => 'group1 Hello World!' } };$group2 = { server => { ip => '192.168.32.1',dc => 'eqdc10', } };$list = { %{$group1}, %{$group2} };
$obj = Class::Ref->new($list);
print $obj->foo->bar . "\n";   
print $obj->server->ip . "\n";   
print $obj->{server}{dc} . "\n";   # example 3
$obj = Class::Ref->new({ foo => [{ bar => 'Hello Again!' }] });
print $obj->foo->[0]->bar . "\n";    # returns "Hello Again!"

运行结果如下所示:
运行结果

再列举一个使用的例子,我们要做一个 Foo.pm 的包,可以使用 Class::Ref 来制作这个类的属性值, 通过引用绑定外部的哈希或者数组,具体使用见下面的代码,给出了详细的代码。

package Foo;use Carp;
use Class::Ref;use strict;
use vars qw($VERSION $Debug);######################################################################
#### Configuration Section$VERSION = '3.426';######################################################################
###sub new {@_ >= 1 or croak 'usage: Foo->new ({options})';my ($class, $ARGS) = (@_);my $self = bless {}, $class;my $obj = Class::Ref->new($ARGS);$self->{REF} = $obj;return ($self);}sub test {my $self = shift;# print $self->{REF}->{'foo'}{'bar'} . "\n";# print $self->{REF}->foo->bar . "\n";
} # Dump 
1;

测试使用代码如下:

#!/usr/bin/perluse FindBin qw($RealBin);
use lib "$RealBin/lib";
use lib "$RealBin";use Foo;###$group1 = { foo => { bar => 'group1 Hello World!' } };$group2 = { server => { ip => '192.168.32.1',dc => 'eqdc10', } };$obj = Foo->new( { %{$group1}, %{$group2} } );
$obj->run;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242662.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

以太网UDP帧发包设计

以太网UDP帧发包设计 RTL8211 是一片 10M/100M/1000M 自适应以太网收发器,提供 MII/GMII/RGMII 接口的 MAC 连接。 下图为 RTL8211 与 FPGA 的连接关系。 以太网MAC层(媒体介入控制层)接口介绍 MII 接口 PHY是物理接口收发器&#xff0…

为什么你总是申请不到大额贷款?

有一个客户反映,近段接近年底,生意周转需要大量的资金,于是他找到了一家贷款公司申请贷款,可是贷款审批下来之后才发现,贷款公司给他批的额度只有2万元,与他心里预期的20万有很大的差距。于是他就怀疑&…

以太网通信协议

以太网通信协议 以太网数据格式

小心,信用卡销卡后,竟然变成黑名单!

信用卡现在很多人都在用,而且大部分人持有的卡片不仅仅一张,有很多人都是持有好几家银行的信用卡,但是卡多了有时候也是一种麻烦,稍微不留意就造成逾期了,因此有些人会选择把不常用的信用卡消掉。但是销卡有时候也不是…

贷款被拒,因为你的征信黑洞太多

去贷款,征信大家都知道很重要,想要获得贷款审批,或者提高贷款额度,一个良好的信用必不可少。因此贷款被拒有很大的可能性是跟征信太差有关,如果征信记录上有以下信息,基本就跟贷款无缘了。(1&am…

信号输出库

信号输出库 文件及工作空间模块

频分复用(Frequency Division Multiplexer)

作者:桂。 时间:2017年12月19日20:43:04 链接:http://www.cnblogs.com/xingshansi/p/8067839.html 前言 主要记录基本的频分复用原理,以及仿真实现。 一、频分复用原理 频分复用FDM: 通常x1..4(t)可以是同一个序列的串并转化&am…

MATLAB系统辨识

MATLAB系统辨识 最终效果:自动调出PID三项对应的参数,控制效果很不错。 目的:通过matlab,辨识出系统的传递函数,找到最理想的PID参数。 优点:1.节省“盲调PID”的时间。2.在辨识出传递函数后,…

AR模型与数据平稳性之间的关系

作者:桂。 时间:2017-12-19 21:39:08 链接:http://www.cnblogs.com/xingshansi/p/8068021.html 前言 前几天碰到一个序列分析的问题,涉及到自回归(auto-regression, AR)等模型,但如何确定序列…

电脑卡顿怎么办?

电脑卡顿怎么办? 电脑主要由CPU,内存,硬盘,显卡,声卡,主板,显示器各种连接线等组成。 CPU:中文名字叫中央处理器,是电脑的大脑,各种数据的处理运算控制。有…

自控原理之系统辨识

自控原理之系统辨识 前沿 数学模型是一个或多或少,以一定的形式表达出你正在观测的事物。**通过观测事物的各项属性,推断出一个数学模型,这是科学。**系统辨识,着手从观测事物得到的数据中,建立一个数学模型。正由于物…

马云狂炸近百亿,你的借呗额度涨了吗?

蚂蚁借呗非常受大家欢迎,因为简单方便,所以很多缺钱的朋友都会通过借呗去借钱。但是借呗的额度主要以小额为主,很多时候满足不了日常的资金需求,因此很多朋友都在想各种方法去提高借呗的额度。但是借呗的额度不是想提高就可以提高…

贷款中介市场要变天了吗?

贷款中介一直是贷款市场一股很重要的力量,他们对各个贷款机构的渗透率很高,贷款中介也确实帮助了很多想贷款的客户,同时也减轻了贷款机构的一些业务压力,甚至有些银行等贷款机构直接把贷款业务外包给了第三方中介结构。可以说贷款…

将数据导入到MATLAB

将数据导入到MATLAB 将数据导入到MATLAB中有二种方式。 第一种:直接使用MATLAB读Excel文件 例如 Excel表格 numxlsread(data1.xlsx,Sheet1,A1:E13);%读入Excel文件 input_trainnum(1:8,1:4);%1到8行,1到4列 output_trainnum(1:8,5);%1到8行&#xff0…

重磅!四部委发文,以后买房可以省几十万元!

去买房,能用公积金贷款的绝不考虑商业贷款,能用商业贷款的绝对不会全款买房。但对于开发商来说,事实却恰好相反,网上就流行了一个段子:买房全款的往里走;按揭的不要堵门口;公积金贷款的把共享单…

函数的分文件编写

函数的分文件编写 三步实现函数的分文件编写 创建.h后缀名的头文件创建.cpp的后缀名的源文件在头文件中写函数的声明在源文件中写函数的定义

网上代开微粒贷,行得通吗?

微粒贷估计大家有想拥有,但腾讯偏偏要跟大家较真,实行白名单邀请制,只给那么几千万人微粒贷,绝大部分人连个微粒贷的图标都没有。因此很多人都在想着各种办法去开通微粒贷,有优化条件的,有开通腾讯信用的&a…

C++的指针

C的指针 指针变量的定义和使用 指针的作用:可以通过指针间接访问内存。 内存编号是从0开始记录的,一般用十六进制数字表示。可以利用指针变量保存地址。 指针就是一个地址。指针变量就是用来存放地址的。 可以通过p去使用它,也可以去访问它…

支付宝2017年个人账单明天发布,你小心脏准备好了吗?

今天上午,支付宝公布了 2017 年全民账单,数据显示,随着移动支付的普及,中国人的生活方式正悄然巨变,不带钱包出门已成为中国人的新习惯,并成为世界的新时尚。根据全民账单数据显示,在2017年&…

支付宝个人账单出来了,这里有最全的查看攻略!

今天是2018年1月3日,支付宝个人年度账单如期而至。账单页面那怎么查看个人账单呢?第一步、打开支付宝,点击【我的】然后选择【账单】打开第二步、点击账单页头的banner第三步、滑动动画查看个人账单