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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值