sub?子例程名($$)指定两个标量的参数
(@$)指定一个数组
按引用调用
符号引用?typeglob
类似于UNIX文件系统中的软链接
星号(*)适用于任意类型的变量,包括标量,数组,散列,文件句柄和子例程等
选择性别名和反斜杠运算符
*array?=?@array ;
*scalary?=?$scalary;
*hash?=?%hash;
*func?=?&;subroutine;
硬引用
通常又称为指针
是含有其他变量地址的标量型变量,通过反斜杠运算符来创建指针。打印指针可以看见十六进制的地址
下面是我写的一个小例子,是书上的习题
use strict;
my %hotels = ("Pillowmint" => "5",
? ? ? ? ? ? ? ? "Buxton Suites" => "5",
? ? ? ? ? ? ? ? "The Middletonian" => "3",
? ? ? ? ? ? ? ? "Notchbelow" => "4",
? ? ? ? ? ? ? ? "Rancho El Cheapo" => "1",
? ? ? ? ? ? ? ? "Pile Inn" => "2");
? ? ? ? ? ? ? ??
printstar(%hotels);
sub printstar {
? ? my $ref = shift;
? ? my @keys = sort {$ref->{$b} <=> $ref->{$a}} keys %$ref; ? ? foreach (@keys) { ? ? ? ? if($ref->{$_} eq "5") { ? ? ? ? ? print "$_|*****n"; ? ? ? ? } elsif($ref->{$_} eq "4") { ? ? ? ? ? ? print "$_|****n"; ? ? ? ? } elsif ($ref->{$_} eq "3") { ? ? ? ? ? ? print "$_|***n"; ? ? ? ? } elsif ($ref->{$_} eq "2") { ? ? ? ? ? ? print "$_|**n"; ? ? ? ? } else { ? ? ? ? ? ? print "$_|*n"; ? ? ? ? } ? ? } }