微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

perl语言学习笔记

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐