一个函数的问题

一个函数的问题

一个函数的问题
写了一个函数,调用的时候输入为一个数组和一个变量。
有一句代码不使用函数时是这样的:
map {push (@bf1,[$end_ecg2f[$_],$end_ecg2f[$_+1],$end_ecg2f[$_+2]])} (0..$len_raf);
希望在函数调用时,输入变量代替上句中的@end_ecg2f 和 $len_raf。
调用函数时:amp(@aa,$bb);
函数中该句写成这样:
sub amp{
...
map {push (@bf1,[$_[0][$_],$_[0][$_+1],$_[0][$_+2]])} (0..$_[1]);
...}

但是结果不对,给怎么样给函数传两个变量呢?
要传递数组得通...
要传递数组得通过引用或者函数原型,比如:
1、引用
调用时amp(\@aa,$bb);
函数还是写成
sub amp {
...
map {push(@bf1,[$_[0][$_],$_[0][$_+1],$_[0][$_+2]])} (0..$_[1]);
...
}
这是由于Perl5规定连续的[]或者{}之间的递引用操作符可以省略,所以可以把上面的写法直接还原成你原来的写法。
2、函数原型
函数写成
sub amp(\@$) {
...
map {push(@bf1,[$_[0][$_],$_[0][$_+1],$_[0][$_+2]])} (0..$_[1]);
...
}
调用时用amp(@aa,$bb),但上面的函数实现必须放在调用之前才能起作用。
这里同样省略了连续的[]之间的->操作符。