如何使Perl正则表达式预编译以节省运行时的时间?

时间:2018-10-23 13:16:22

标签: regex perl

我具有如下所示的perl功能,执行时间较长。 (注意:此函数被调用10000+次。)

在搜索了一些内容之后,我发现如果我可以预编译perl regex,则执行时间可能会减少。

有人可以帮忙修改perl regex,以节省时间吗? 还是有更好的解决方案?

sub some_func {
    my $var1=shift;
    my $var2=shift;

    if (!($var1 =~ /^UTF-?8$/)) {
         print "Do something important\n";
    }
    if ($var2 =~ /$some_global_string/i) {
         print "Do something important\n";
    }
}

例如$ var2可以是

"character string with maximum 4096 character, Including html character as string"

和$ some_global_string可以是

"string as $var2 but max length of 256 character"`

1 个答案:

答案 0 :(得分:4)

http://perldoc.perl.org/perlop.html#Regexp-Quote-Like-Operators

my $RE1 = qr/^UTF-?8$/;
my $RE2 = qr/$some_global_string/i;
....
if ($var1 !~ /$RE1/) {...};
...
if ($var2 =~ /$RE2/) {...};