perl的ref 函数(转贴)
发布时间:2020-12-15 20:52:36 所属栏目:大数据 来源:网络整理
导读:perl的ref 函数 ????我们都知道perl有引用的概念:一组数据实际上是另一组数据的引用。这些引用称为指针,第一组数据中存放的是第二组数据的头地址。这部分的内容详见: [原]《Perl 24小时教程》学习笔记:引用与结构 。引用的方式被用得相当普遍,特别是在
perl的ref 函数
????我们都知道perl有引用的概念:一组数据实际上是另一组数据的引用。这些引用称为指针,第一组数据中存放的是第二组数据的头地址。这部分的内容详见:[原]《Perl 24小时教程》学习笔记:引用与结构。引用的方式被用得相当普遍,特别是在面向对象的模块、函数的参数传递等常见。但perl对每个引用都是以一个普通的变量来定义的,有时候,如果数据的架构比较复杂,我们可能会困惑于某个变量所指向的地址的实际内容是什么?perl的ref函数就可以帮助我们。
引用
$ perldoc -tf ref
ref EXPR ref???? Returns a non-empty string if EXPR is a reference,the empty ????????string otherwise. If EXPR is not specified,$_ will be used. The ????????value returned depends on the type of thing the reference is a ????????reference to. Builtin types include: ????????????SCALAR ????????????ARRAY ????????????HASH ????????????CODE ????????????REF ????????????GLOB ????????????LVALUE ????????If the referenced object has been blessed into a package,then ????????that package name is returned instead. You can think of "ref" as ????????a "typeof" operator. ????????????if (ref($r) eq "HASH") { ????????????????print "r is a reference to a hash./n"; ????????????} ????????????unless (ref($r)) { ????????????????print "r is not a reference at all./n"; ????????????} ????????See also perlref. 二、举例 简单来说,就是如果一个变量是个引用,那ref就可以返回一个表示其实际引用对象的描述性字符串,否则就会返回空值。如果没有指定ref函数的参数,默认对$_变量操作。如果被引用的对象已经被打包,则会返回该包的名称,类似typeof操作符。 代码:
#!/usr/bin/perl -w
%hash=('Tom'=>'Male','Jerry'=>'Female'); $href=/%hash; for $key (keys %$href) { ??print $key." is ".$href->{$key}; ??print "/n"; } if ( ref($href) eq "HASH" ) { ??print "href is a reference to a hash./n"; } unless ( ref($href) ) { ??print "href is not a reference at all./n"; } print "href is ",ref($href),"./n"; 输出结果:
引用
$ perl testref.pl Jerry is Female Tom is Male href is a reference to a hash. href is HASH
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |