【发布时间】:2018-10-23 13:16:21
【问题描述】:
我有一个如下所示的 Perl 函数,它需要更长的时间来执行。 (注意:这个函数被调用超过 10,000 次。)
在谷歌上搜索了一些之后,我发现 如果我可以预编译 Perl 正则表达式,那么执行时间可能会减少。
如何修改 Perl 正则表达式以减少时间?还是有更好的解决方案?
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"`
【问题讨论】:
-
请举例说明
$var2和$some_global_string的内容 -
@HåkonHægland 感谢您的回复,我已经编辑了相同的详细信息,请查看
-
最一般的答案(也包括像
s/(\w+)/\u\L$1/g;(在变量/外部数据中)这样的替换,而不仅仅是变量中的简单固定字符串)是bart's answer to Passing a regex substitution as a variable in Perl