如何在Perl模块中导出正则表达式并在外部脚本中调用使用
Perl模块导出正则表达式的实现方案
模块端(regExport.pm)正确代码
package regExport; use strict; use warnings; use Exporter qw(import); # 导出列表要写全变量的符号标识 our @EXPORT_OK = qw($re); # 使用qr//预编译正则,声明为our包变量才能跨包导出 our $re = qr/^m/; # 此处替换为你自己的正则规则,修饰符可直接加在末尾,比如qr/^m/i代表忽略大小写 # Perl模块必须末尾返回真值 1;
调用脚本正确代码
use strict; use warnings; # 导入对应正则变量 use regExport qw($re); my @li = ("man", "qwrt", "mnbv", "azx", "aeiou"); foreach my $st (@li) { # 直接使用预编译的正则变量做匹配测试即可 if ($st =~ $re) { print "字符串 '$st' 匹配成功\n"; } else { print "字符串 '$st' 匹配失败\n"; } }
核心实现要点
- 预编译正则必须使用
qr//运算符:该运算符会将正则规则编译为Regexp类型的标量,既支持直接用于匹配操作,也可以像普通标量一样跨包传递、导出 - 导出变量必须声明为
our包变量:my声明的词法变量仅在当前代码块作用域生效,无法跨包导出;同时@EXPORT_OK列表、导入语句中都要写全变量的前置符号(如$),不能只写变量名 - 匹配调用无需额外包裹定界符:预编译完成的正则变量可以直接放在
=~运算符右侧使用,正则的修饰符(如忽略大小写i、全局匹配g等)统一在模块端qr//的末尾声明即可
内容的提问来源于stack exchange,提问作者MSS2001
相关产品推荐
相关产品推荐

