包的链接 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;

好用的Perl包 Class::Ref相关推荐

  1. Net::SSH::Perl 包 与 Net::OpenSSH 包的 性能对比代码

    Net::SSH::Perl 包 test 代码: use strict; use Net::SSH::Perl; use Class::Std::Utils; use Encode; use POS ...

  2. perl 包下载官方网站(速度很快的) 和 解压安装指令

    https://metacpan.org/ 输入你要搜索的包 下载后放入目录下进行 tar  -zxf   XXXX.tar.gz cd XXXX perl  Makefile.PL make mak ...

  3. shell 脚本批量安装perl包

    dir是指定安装包的目录 #! /bin/bash #filelist=`ls -l|awk {'print $9'}` dir=/wls/oracle/testShellInstallperl/pa ...

  4. Perl面向对象(2):对象

    本系列: Perl面向对象(1):从代码复用开始 Perl面向对象(2):对象 Perl面向对象(3):解构--对象销毁 第3篇依赖于第2篇,第2篇依赖于1篇. 已有的代码结构 现在有父类Animal ...

  5. php 调用 perl,perl中如何调用R语言

    以下是从网上收集的从perl中调用R的方法: 1 直接用system()命令 比如有个test.R程序,可以通过下面的方式调用: system("R 2 安装模块RSperl 该模块的具体介 ...

  6. 第十三章 Perl的面向对象编程

    第十三章 Perl的面向对象编程 by flamephoenix 一.模块简介 二.Perl中的类 三.创建类 四.构造函数 实例变量 五.方法 六.方法的输出 七.方法的调用 八.重载 九.析构函数 ...

  7. php中perl配置,Windows下 Apache、PHP和Perl的安装配置

    在安装AWStats7.0和 JAWStats之前需要配置其环境,而运行AWStats需要perl支持,运行JAWStats需要PHP支持,这篇文章将具体介绍其环境的安装配置. 环境 Windows ...

  8. perl 安装html,centos perl 安装HTML-Parser时报错

    新装了centos7,安装perl模块时,发现系统自带的perl很多基础的包都没安装(是基础perl的阉割版本,甚至失去了很多重要的基础包 http://www.perlmonks.org/?node ...

  9. Linux Perl安装

    [perl概述] Perl 是 Practical Extraction and Report Language 的首字母缩写,为 "实用报表提取语言".Perl 是一种高级.通用 ...

最新文章

  1. python 笔记 之 sqlalchemy操作数据库-创建表
  2. 我的秋招之路(开篇)
  3. Oracle11gR2在9x8hk..Windows18669144449 命名进入Oracle
  4. 将SAP Analytics Cloud嵌入到SAP Cloud for Customer里去
  5. matlab中的nlinfit,matlab中nlinfit问题!!!!!!!!!!!!
  6. export_symbol能对变量使用吗_美缝剂能代替玻璃胶使用吗?
  7. 聊聊hikari与tomcat jdbc pool的fail fast
  8. 花书+吴恩达深度学习(二十)构建模型策略(超参数调试、监督预训练、无监督预训练)
  9. SQL中 and or in的用法
  10. Redis集群:./redis-trib.rb:24:in `require': no such file to load -- rubygems
  11. 平面排版时,教你突出中文美感的几种方法
  12. XYPC一款实用的平面测量控制网平差软件
  13. 什么是云服务器ECS
  14. 闲谈IPv6-聊聊IPv6端到端分段和MTU探测的问题
  15. Mac IntelliJIDEA非正常关闭解决(reopen失败)
  16. 【云计算】一文了解裸金属服务器(一)
  17. future java get_关于 Future get方法的疑问
  18. 组合预测 | MATLAB实现EMD-KPCA-LSTM、EMD-LSTM、LSTM多变量时间序列预测对比
  19. 工装夹具检具治具机械设计机构solidworks模型3d课程图纸sw
  20. 大厂面试真题解读:Tomcat的连接器是如何设计的?

热门文章

  1. 想建一个带分隔条的label 控件;
  2. 玩了一把WOW,贴几张图上来,当然只是私服哈!
  3. python调用c的配置文件_python调用c
  4. python采用强制缩进if_Python缩进和选择解析
  5. free mybatis 不生效_2019BATJ面试题汇总详解:MyBatis+MySQL+Spring+Redis+多线程
  6. 陕西专科学校王牌计算机专业,陕西省高职专科院校排名+王牌专业
  7. C语言编程序输出SCHAR_MAX的,运用堆栈把十进制变换成二进制
  8. [HAOI2015]树上染色(树形dp,树形背包)
  9. .net 窗体清除上次显示的内容_access在系统右下角任务栏弹出消息提示窗体
  10. PHP使用Switch语句判断星座,PHP的switch判断语句的“高级”用法详解 用switch语句怎样判断成绩的等级...