@EXPORT數組
Perl經過繼承,能夠使子類能夠像使用本地方法同樣使用其基類的方法。函數
一個類若是想把本身的方法(變量)暴露給別人使用(好比一些公共基礎類的的通用方法或變量),還可將直接將方法(變量)添加到內置數組@EXPORT中便可。示例以下:spa
[xywang@mnsdev13:~/]$ cat Fred.pm
package Fred;
use Exporter 'import'; @EXPORT = qw(flintstone $var);
sub flintstone{
return 99;
};
our $var="SADA1311";
1;
[xywang@mnsdev13:~/]$ cat test.pl
#!/usr/local/bin/perl5
use Fred ;
print $var;
print "\n";
print flintstone;
[xywang@mnsdev13:~/]$ ./test.pl
SADA1311
99
注意除了將方法和變量加入到@EXPORT中之外,還須要在最開始的時候use Exporter來支持:blog
use Exporter 'import';
或者繼承
use base qw(Exporter);
@EXPORT_OKio
Perl中還有個@EXPORT_OK.class
@EXPORT和 @EXPORT_OK基本相同,惟一的區別是若是在@EXPROT中指定的函數或者變量,在其餘的地方能夠經過use 這個package直接使用該package中export的方法和函數,可是若是在@EXPORT_OK中指定了,在use時,單獨use 這個package不行,必須把package中的要使用的EXPORT_OK中的方法名也列出來,如:test
[xywang@mnsdev13:~/test/OO/test2]$ cat Fred_export_ok.pm package Fred_export_ok; use Exporter 'import'; @EXPORT_OK = qw(flintstone $var); sub flintstone{ return 99; }; our $var="SADA1311"; 1; [xywang@mnsdev13:~/test/OO/test2]$ cat test.pl #!/usr/local/bin/perl5 use Fred_export_ok; print $var; print "\n"; print flintstone; [xywang@mnsdev13:~/test/OO/test2]$ ./test.pl [xywang@mnsdev13:~/test/OO/test2]$
發現如上test腳本沒有任何輸出。 可是若是修改test.pl以下:import
[xywang@mnsdev13:~/test/OO/test2]$ cat test.pl
#!/usr/local/bin/perl5
use Fred_export_ok qw(flintstone $var);
print $var;
print "\n";
print flintstone;
[xywang@mnsdev13:~/test/OO/test2]$ ./test.pl
SADA1311
99
參考資料:https://stackoverflow.com/questions/17912400/export-vs-export-ok-in-perl基礎