加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl语言学习笔记

发布时间:2020-12-16 00:00:01 所属栏目:大数据 来源:网络整理
导读:1、调试查看HASH类型变量的值: $info-{name} 2、查看所有hash值 x $info 3、caller函数 本函数返回以子函数形式调用其所在函数的对象的相关信息,包括所在文件名以及行号等。 如: sub sub_func { my ($pkg,$filename,$line) = caller; } sub caller_func {
1、调试查看HASH类型变量的值: $info->{name} 2、查看所有hash值 x $info 3、caller函数 本函数返回以子函数形式调用其所在函数的对象的相关信息,包括所在文件名以及行号等。 如: sub sub_func { my ($pkg,$filename,$line) = caller; } sub caller_func { &sub_func(); } 执行caller会返回sub_func被caller_func调用的具体位置,以及caller_func所在包和文件的信息 4、local变量 local变量无需通过参数传递给下文即可被下层子函数访问,且可跨多级子函数访问,但不能被上层调用函数访问,也不能跨文件访问。 5、ref函数----->用法 ref (EXPR) 返回EXPR的数据类型,有ARRAY,CODE,GLOB,HASH,REF,SCALAR等 6、bless函数----->用法 bless (REFERENCE,[CLASSNAME]) 设置REFERENCE为CLASSNAME类型? 7、scalar----->用法 scalar (EXPR) 返回数组(or 列表?)EXPR元素的个数 8、正则表达式匹配(101.233上面的regex_test.pm函数匹配换行符仍然有误,需要深入探讨) 9、子函数调用传递变量时如果使用了括号则表示为列表环境,否则为标量环境,参数列表@_为数组类型,如果在标量环境赋值,则会返回数组元素的个数。使用scalar伪函数可确保操作在标量环境下。 10、调用子函数时最好加上'&'符号,这样如果自定义的子函数名与perl的内建函数重名就不会有问题。 11、@lines = <FILE> 会一次读取文件的所有内容 12、@ARGV数组是由perl解释器事先建立的特殊数组,其内容就是由调用参数组成的列表。钻石操作符(<>)就是从这里面获取数据,如果@ARGV为空,则<>使用标准输入流 13、传递给函数的参数中不能有多个数组参数,且数组参数需放在最后一个 14、与if语句匹配的是elsif而不是else if 15、chomp函数在处理空行时似乎会出错【待验证】 16、hash类型的变量在传递参数的时候可以通过引用传递,只需加大括号即可,以引用形式传递的hash在访问时要使用类似于指针箭头的 变量访问符号,特别的,在用hash给hash赋值的时候,可使用引用的方式,例如: my %src_hash = {"a" => "b"}; my $dst_hash = {%src_hash}; 17、使用一维数组给二维数组直接赋值的时候,使用大括号或者不使用括号的方式均不能成功赋值,可用如下方式: my @src_arr = (1,2,3); my @dst_arr = (); $dst_arr[0] = [@src_arr]; #中括号的作用是将其转换为子数组 $dst_arr[1] = [@src_arr]; 18、调用函数时传递两个hash或数组参数的方式是传递其引用,对于hash: my %hash_a = ...; my %hash_b = ...; hash_test({%hash_a},{%hash_b}); 或者 hash_test(%hash_a,%hash_b); 对于数组: my @array_a = ...; my @array_b = ...; array_test(@array_a,@array_b); ?目前仅发现这个有效,使用大括号会将数组中的元素两两配对转成hash

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读