@EXPORT and @EXPORT_OK
@EXPORT
Export subroutines, with no need to initialize an object when you use.
之前有提到過,以下兩種方式等同:
use File::Basename;
## like
BEGIN { require File::Basename; File::Basename->import; }
其中的import沒有傳入list,並不意味著import nothing,而是將 @EXPORT 裡所有的成員import到當前上下文。如果@EXPORT 不含有任何成員,等同於File::Basename->import; 未執行。
@EXPORT_OK
Export subroutines on demand basis, need qw() when use package.
以上兩個全域性 list 可同時使用,不過需要注意實際匯入的list。 如 @EXPORT_OK = qw(multiply divide); 後直接呼叫add(), subtract 後syntax error。需要 qw (add subtract multiply divide)
##try_arithmetic.pl
use Arithmetic qw (multiply divide);
#print "1+1 = " . add(1,1) . "\n";
#print "1-1 = " . subtract(1, 1) . "\n";
print "2X2 = " . multiply(2, 2) . "\n";
print "4/2 = " . divide(4, 2) . "\n";
package Arithmetic;
use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(add subtract);
@EXPORT_OK = qw(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;
}
總結:
- @EXPORT & @EXPORT_OK 輸出subroutines or attributes 到當前上下文, 以便不用被例項化就能直接呼叫。
- @EXPORT_OK 為按需輸出,需要 use XXX; 時以引數形式顯示傳入。
- 需要注意, use XXX; 時傳入指定 list 意味著更改了預設 export list(@EXPORT)。也就是說,這個指定的 list 可以不用例項化直接呼叫(當然如果不在 @EXPORT & @EXPORT_OK ,直接呼叫還是會報錯)。
相關文章
- export 和 export default 區別Export
- exportExport
- JavaScript中的export、export default、exports和module.exports(export、export default、exports使用詳細)JavaScriptExport
- export和export default的區別Export
- export ORACLE_SID=founder exportExportOracle
- import、require 、export、export default、exports、module exportsImportUIExport
- Conventional Path Export和Direct Path ExportExport
- Conventional Path Export Versus Direct Path ExportExport
- FORM ExportORMExport
- export/importExportImport
- ES6:export 與 export default 區別Export
- JavaScript ES6中,export與export defaultJavaScriptExport
- 6.exports、module.exports、export、export defalutExport
- module.exports 、 exports 和 export 、 export default 、 importExportImport
- ES6 export && export default 差異總結Export
- ES6 export 和 export default的區別Export
- export default用法Export
- export DISPLAY=:0.0Export
- mysql export & importMySqlExportImport
- mysql import and exportMySqlImportExport
- Export Parameter : BufferExport
- Export Parameter : QueryExport
- SAP UI5 Gateway Export 和 Client Export 的比較UIGatewayExportclient
- JavaScript 中的 exportJavaScriptExport
- csdn_export_mdExport
- vSphere export openstackExport
- JavaScript export語句JavaScriptExport
- Linux export 命令LinuxExport
- Export Parameter : ConsistentExport
- Export Parameter : CompressExport
- exports、module.exports 和 export、export default 到底是咋回事Export
- Linux之export命令LinuxExport
- ES6 import exportImportExport
- oracle Export/Import工具使用OracleExportImport
- statistics的export與import!ExportImport
- DB2 export and importDB2ExportImport
- 初探data pump export (二)Export
- 初探data pump export(一)Export