## 引用是引用其他變量的標量
引用像 C 中引用其他變量的指針。使用?`\`?操作符創建引用。
~~~
my $sref = \$scalar;
my $aref = \@array;
my $href = \%hash;
my $cref = \&subroutine;
~~~
引用指向的事物即其所指。
使用合適的印記解引用,首選使用花括號。
~~~
my $other_scalar = ${$sref};
my @other_array = @{$aref};
my %other_hash = %{$href};
&{$cref} # Call the referent.
~~~
## 用箭頭符解引用更容易
要訪問數組和哈希引用,使用?`->`?操作符。
~~~
my $stooge = $aref->[1];
my $stooge = $href->{Curly};
~~~
## ref vs. isa
* 一個引用屬于一個類
* 你可以使用?`ref`?查檢類
* 一個對象引用能從其他類繼承
* 你可以使用?`isa`?來詢問一個對象是否繼承自一個類
* 沒有好理由不要用?`ref`
* `isa`?是?_UNIVERSAL_?包的一部分,因此你可以在對象上調用它
~~~
my $mech = WWW::Mechanize->new;
print "ok\n" if $mech->isa('LWP::UserAgent');
~~~
## 引用匿名子例程
子例程能被賦給變量,并被調用,以允許代碼引用被傳遞及使用。這將十分有用, 比如編寫需要執行所提供代碼的子例程。
~~~
my $casefix = sub { return ucfirst lc $_[0] };
my $color = $casefix->("rED");
print "Color: $color\n"; # prints Red
~~~