Perl中@ISA數組與Exporter

來源:互聯網
上載者:User

Perl類(包)的繼承是通過@ISA數組來實現的。簡單來說,Perl把它看作目錄名的特殊數組,與@INC數組類似(@INC數組是包含引用路徑)。當Perl在當前類(包)中無法找到所需方法時,便會在該數組列出的類中尋找。

是否是聽起來還是很抽象。。。。。。我放出個例子,供大家參考。一般我看的比較多的例子,@ISA都會和Exporter配合使用。

Arithmetic.pm

package Arithmetic;use strict;use Exporter;#use vars預定義全域變數#如果不使用use vars會報global錯誤,或者使用our。#當然如果不使用use strict的話,就不會報錯了。use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);#這塊,就是我們所說的。將Exproter賦值給@ISA數組@ISA = qw(Exporter);#預設匯出符號@EXPORT = qw(add subtract);#按要求匯出符號,也就是在use的時候必須要特殊制定qw()@EXPORT_OK = qw(multiply divide);#以索引值符號來標記的匯出,該數組中的匯出元素,必須在@EXPORT和@EXPORT_OK中存在。%EXPORT_TAGS = ( Spec => [qw(&add &subtract &multiply &divide)]);sub add{    my ($no1,$no2) = @_;    my $result;    $result = $no1+$no2;    return $result;}sub subtract{    my ($no1,$no2) = @_;    my $result;    $result = $no1-$no2;    return $result;}sub multiply{    my ($no1,$no2) = @_;    my $result;    $result = $no1*$no2;    return $result;}sub divide{    my ($no1,$no2) = @_;    my $result;    $result = $no1/$no2;    return $result;}1;

@EXPORT數組包含預設匯出的變數和函數的名字,當use package時就會得到。而@EXPORT_OK中的變數和函數只有當程式中use package中特別要求時才會匯出。
而%EXPORT_TAGS中的索引值對只允許程式包含那些在@EXPORT和@EXPORT_OK中列出的特定符號組。

script.pl

#! /usr/bin/perl -wuse strict;use warnings;use Arithmetic;#這裡上面所提及的特殊匯入,也就是@Export_OK#use Arithmetic是不包含@Export_OK的use Arithmetic qw(multiply divide);#以索引值符號匯入,!add代表除了它use Arithmetic qw(:Spec !add);print add(1,2),"\n";print multiply(1,2),"\n";print divide(4,2),"\n"; 

上面的例子,就是@ISA數組的用法。這個例子的意義何在呢?

模組分兩種風格:傳統的和物件導向。

傳統風格的模組,為調用者匯入和使用定義的子常式和變數。

物件導向風格的模組,以類調用。

所以模組有兩種方法來給它的介面提供者來使用:匯出符號、類方法調用。

該例子就屬於前者。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.