对cpan上的某个模块的constructor有疑问,请教
时间:2010-11-10
来源:互联网
本帖最后由 gaochong 于 2010-11-10 21:08 编辑
perl学习中。
模块: http://cpansearch.perl.org/src/BLOONIX/Sys-Statistics-Linux-0.59/lib/Sys/Statistics/Linux/DiskUsage.pm
new代码如下:
sub new {
my $class = shift;
my $opts = ref($_[0]) ? shift : {@_}; -----A
my %self = (
cmd => {
path => '/bin',
df => 'df -kP 2>/dev/null',
}
);
foreach my $p (keys %{ $opts->{cmd} }) { --B
$self{cmd}{$p} = $opts->{cmd}->{$p};
}
return bless \%self, $class;
}
我的疑问在于:
A行、B行的目的何在?
是为了让用户指定cmd的path和df吗?
个人觉得,没有啥用处。
perl学习中。
模块: http://cpansearch.perl.org/src/BLOONIX/Sys-Statistics-Linux-0.59/lib/Sys/Statistics/Linux/DiskUsage.pm
new代码如下:
sub new {
my $class = shift;
my $opts = ref($_[0]) ? shift : {@_}; -----A
my %self = (
cmd => {
path => '/bin',
df => 'df -kP 2>/dev/null',
}
);
foreach my $p (keys %{ $opts->{cmd} }) { --B
$self{cmd}{$p} = $opts->{cmd}->{$p};
}
return bless \%self, $class;
}
我的疑问在于:
A行、B行的目的何在?
是为了让用户指定cmd的path和df吗?
个人觉得,没有啥用处。
作者: gaochong 发布时间: 2010-11-10
本帖最后由 zhlong8 于 2010-11-10 21:15 编辑
用来处理传入的参数的啊。
A:你可以传入一个 hashref 也可以在new中用 opt1 => v1, opt2 =>v2 …… 这种方式传入参数,A就是这了判断你采用的哪种参数传入方法。
复制代码
B:将$opt 中配置信息加入对象中[$opt 为 hashref],即处理相应参数加到 cmd 对应的 hash 中
用来处理传入的参数的啊。
A:你可以传入一个 hashref 也可以在new中用 opt1 => v1, opt2 =>v2 …… 这种方式传入参数,A就是这了判断你采用的哪种参数传入方法。
- #A
-
- PKG->new({opt1 => v1, opt2 => v2...}); #hashref
-
- #或
- PKG->new(opt1=>v1, opt2 => v2 ...);
作者: zhlong8 发布时间: 2010-11-10
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28