perl指针传参

本代码将一个list的指针和一个标量传入perl 子例程中,完成排序后输出。

perl的指针可以直接看做是一个标量,在使用时,表明以什么方式解析此指针即可(list, scalar 还是 hash):

#! perl

# author : ez
# date : 2015/7/2
# describe : ...

use strict;
use warnings;

sub sort_order ($$) {
	my ($array_ptr, $desc) = (shift, shift);
	my @res = undef;
	if ($desc) {
		@res = sort {$b <=> $a} @$array_ptr;
	} else {
		@res = sort {$a <=> $b} @$array_ptr;
	}
	
	print "@res ";
}

sub main  {
	sort_order ([0x13, 0x18, 0x14, 0x19, 0x20, 0x0, 0x28, 0x15, 0x21, 
		   0x29, 0x32, 0x16, 0x17, 0x1, 0x30, 0x26, 0x24, 0x25, 
		   0x11, 0x33, 0x24, 0x5, 0x7, 0x31, 0x3, 0x27, 0x2], 1);
}

&main;

当调用sort_order 时,创建了一个匿名的list,用 [] 进行定义,随后又传入一个标量,这样可以看做子例程需要传入两个标量。

之后通过判断$desc 的值确定是进行正序排序还是逆序排序。

此处sort 函数的使用可以 sort  subroutine list

{} 定义了一个匿名子例程的指针,用于描述两个数据之间的判断方法,$b , $a 是匿名子例程的局部变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值