日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

好用的Perl包 Class::Ref

發布時間:2023/12/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 好用的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; 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的好用的Perl包 Class::Ref的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。