我正在维护几个Perl脚本,它们都具有用于不同功能的类似代码块.每次更新代码块时,我都必须遍历每个脚本并手动进行更改.
有没有办法将常用函数封装到自己的脚本中并调用它们?
还有其他方法,但它们都有严重的问题.模块是要走的路,它们不一定非常复杂.这是一个基本模板:
package Mod;
use strict;
use warnings;
use Exporter 'import';
#list of functions/package variables to automatically export
our @EXPORT = qw(
always_exported
);
#list of functions/package variables to export on request
our @EXPORT_OK = qw(
exported_on_request
also_exported_on_request
);
sub always_exported { print "Hi\n" }
sub exported_on_request { print "Hello\n" }
sub also_exported_on_request { print "hello world\n" }
1; #this 1; is required, see perldoc perlmod for details
Run Code Online (Sandbox Code Playgroud)
创建一个类似的目录/home/user/perllib.将该代码Mod.pm放在该目录中指定的文件中.您可以像这样使用模块:
#!/usr/bin/perl
use strict;
use warnings;
#this line tells Perl where your custom modules are
use lib '/home/user/perllib';
use Mod qw/exported_on_request/;
always_exported();
exported_on_request();
Run Code Online (Sandbox Code Playgroud)
当然,您可以根据需要为文件命名.将包命名为与文件相同是一种好的形式.如果你想拥有::包的名称(比如File::Find),你需要创建子目录/home/user/perllib.每个::都相当于a /,所以My::Neat::Module会进入文件/home/user/perllib/My/Neat/Module.pm.您可以阅读更多的模块perldoc perlmod,更多的是Exporter在perldoc Exporter