好用的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…

如何学习

读百度学术“机长夫人”的《研究生毕业后,才知道什么是真正的学习》后的笔记和感想 关于学习学习是什么?学习是通过各种途径获得知识和技能的过程。它只是过程和手段,而绝不应该成为目的,它最终是为了改变行为,升级自己…

Perl split字符串分割函数用法指南

本文和大家重点讨论一下Perl split函数的用法,Perl中的一个非常有用的函数是Perl split函数-把字符串进行分割并把分割后的结果放入数组中。这个Perl split函数使用规则表达式(RE),如果未特定则工作在$_变量上。 Perl split函数可…

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

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

以太网通信协议

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

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

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

verilog中的综合与不可综合

1)所有综合工具都支持的结构:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,f…

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

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

信号输出库

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

学会放松,也是一项了不起的技能!

-1-读此文前先放一个小测试,大家不妨试一下,答案会在文末给出。写文已一年有余,但都停留在兴趣爱好的层面,虽说兴趣是最好的老师,但终究缺乏专业的培训。报名参加了土豆姐的书评写作课,希望可以系统地学习相…

数字IC设计经典书籍

1 《Verilog HDL高级数字设计》 中文版和原著。这本书本人以为是讲Verilog方面的最好的一本书,看完此书后,相信大家的code水平会有很大提高。书中例子及其丰富,涵盖了RISC、UART、异步FIFO、数字信号处理、乘法器和触发器,其中一章…

频分复用(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)等模型,但如何确定序列…

开源EDA工具

1.来自kakuyou http://www.icarus.com/eda/verilog/ 开源的verilog 编译器,包含模拟器和基本逻辑综合模块。 http://www.geocities.com/SiliconValley/Campus/3216/GTKWave/gtkwave-win32.html windows版的gtk-wave,一个图形波形察看工具 http://em…

大学生每个月1500元的生活费,够吗?

-1-双十二刚过,朋友圈里便又刮起一阵“哭穷”的大风。曾看过一则新闻,一位来自浙江义乌的妈妈发帖说每月给女儿1200元生活费,被女儿质问自己是否是亲生的。上图是一张流传很广的大学生月消费支出表,加起来一共是1562元&#xff0c…

电脑卡顿怎么办?

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

我的2017,关于读书的一点心得

-1-2017年,读了40多本书,跟那些动辄一天一本书的大神相比,这个数目并不算多,但于我而言已经是一个很大的进步,但常常还会焦虑,觉得自己跟别人的差距越拉越大。为什么我的读书速度这么慢? 为什么…

自控原理之系统辨识

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

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

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