运行结果如下:
$ test 1 2 3 4 Pointer Address of ARGV = ARRAY(0x806c378) Number of arguments : 4 0 : 1; 1 : 2; 2 : 3; 3 : 4; 第5行将引用$pointer指向数组@ARGV,第6行输出ARGV的地址。$pointer返回数组第一个元素的地址,这与C语言中的数组指针是类似的。第7行调用函数scalar()获得数组的元素个数,该参数亦可为@ARGV,但用指针则必须用@$pointer的形式指定其类型为数组,$pointer给出地址,@符号说明传递的地址为数组的第一个元素的地址。第10行与第7行类似,第11行用形式$$pointer[$i]列出所有元素。 对关联数组使用反斜线操作符的方法是一样的--把所有关联数组名换成引用$poniter。注意数组和简单变量(标量)的引用显示时均带有类型--ARRAY和SCALAR,哈希表(关联数组)和函数也一样,分别为HASH和CODE。下面是哈希表的引用的例子。
#!/usr/bin/perl 1 # 2 # Using Associative Array references 3 # 4 %month = ( 5 '01', 'Jan', 6 '02', 'Feb', 7 '03', 'Mar', 8 '04', 'Apr', 9 '05', 'May', 10 '06', 'Jun', 11 '07', 'Jul', 12 '08', 'Aug', 13 '09', 'Sep', 14 '10', 'Oct', 15 '11', 'Nov', 16 '12', 'Dec', 17 ); 18 19 $pointer = \%month; 20 21 printf "\n Address of hash = $pointer\n "; 22 23 # 24 # The following lines would be used to print out the 25 # contents of the associative array if %month was used. 26 # 27 # foreach $i (sort keys %month) { 28 # printf "\n $i $$pointer{$i} "; 29 # } 30 31 # 32 # The reference to the associative array via $pointer 33 # 34 foreach $i (sort keys %$pointer) { 35 printf "$i is $$pointer{$i} \n"; 36 } 结果输出如下:
$ mth Address of hash = HASH(0x806c52c) 01 is Jan 02 is Feb 03 is Mar 04 is Apr 05 is May 06 is Jun 07 is Jul 08 is Aug 09 is Sep 10 is Oct 11 is Nov 12 is Dec
|