perl的ref 函數貼)

來源:互聯網
上載者:User

perl的ref 函數

    我們都知道perl有引用的概念:一組資料實際上是另一組資料的引用。這些引用稱為指標,第一組資料中存放的是第二組資料的頭地址。這部分的內容詳見:[原]《Perl 24小時教程》學習筆記:引用與結構。引用的方式被用得相當普遍,特別是在物件導向的模組、函數的參數傳遞等常見。但perl對每個引用都是以一個普通的變數來定義的,有時候,如果資料的架構比較複雜,我們可能會困惑於某個變數所指向的地址的實際內容是什嗎?perl的ref函數就可以協助我們。

一、說明
從perl內建的協助說明可以瞭解相關的用法:

引用$ perldoc -tf ref
ref EXPR
ref     Returns a non-empty string if EXPR is a reference, the empty
        string otherwise. If EXPR is not specified, $_ will be used. The
        value returned depends on the type of thing the reference is a
        reference to. Builtin types include:

            SCALAR
            ARRAY
            HASH
            CODE
            REF
            GLOB
            LVALUE

        If the referenced object has been blessed into a package, then
        that package name is returned instead. You can think of "ref" as
        a "typeof" operator.

            if (ref($r) eq "HASH") {
                print "r is a reference to a hash./n";
            }
            unless (ref($r)) {
                print "r is not a reference at all./n";
            }

        See also perlref.

二、舉例
簡單來說,就是如果一個變數是個引用,那ref就可以返回一個表示其實際引用對象的描述性字串,否則就會返回空值。如果沒有指定ref函數的參數,預設對$_變數操作。如果被引用的對象已經被打包,則會返回該包的名稱,類似typeof操作符。
代碼:

#!/usr/bin/perl -w
%hash=('Tom'=>'Male','Jerry'=>'Female');
$href=/%hash;
for $key (keys %$href) {
  print $key." is ".$href->{$key};
  print "/n";
}
if ( ref($href) eq "HASH" ) {
  print "href is a reference to a hash./n";
}
unless ( ref($href) ) {
  print "href is not a reference at all./n";
}
print "href is ",ref($href),"./n";

輸出結果:引用$ perl testref.pl
Jerry is Female
Tom is Male
href is a reference to a hash.
href is HASH

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.