我正在编写文件解析工具,为了可维护性/测试,我希望在脚本开头定义所有正则表达式模式字符串。
我知道如何在regex字符串中使用变量引用,但是在创建字符串时这些引用会被填充。在设置变量之前,是否有其他方法可以在模式中引用变量?
在我的脚本顶部:
my $p_delimiter = "^.{105}(.)"; # grab the 106th character, thats the file delimiter i need of the rest of the script
my $p_type = "(?:^|$d)ST([^\*])[\w\1]*?(\d{3})\1"; # later in script I name the delimiter caught by the $p_delimiter pattern as $d, and use it here to find the file type
my $p_check_num = "(^|$d)TRN\*\d\*([a-zA-Z0-9]{1,30})\*"; # I use the delimiter $d here as well
我可以通过在创建$ d后声明$ p_type和$ p_check_num来解决这个问题,但是还有另一种方法可以解决这个问题(" \\ $ d"或其他什么)所以我可以保留所有的模式在脚本的顶部?感谢