我认为这个问题是重复的,但搜索对我没有帮助.
my $pattern = "javascript:window.open\('([^']+)'\);"; $mech->content =~ m/($pattern)/; print $1;
我想在正则表达式中有一个外部$模式.我怎样才能做到这一点?当前的一个返回:
Use of uninitialized value $1 in print at main.pm line 20.
解决方法
1美元是空的,所以比赛没有成功.我将在我的例子中组成一个常量字符串,我知道它将匹配模式.
使用qr声明正则表达式,而不是简单的字符串.此外,您正在捕获两次,一次是在$pattern中用于打开调用的括号,一次在m运算符中用于整个事件,因此您得到两个结果.而不是1美元,2美元等.我更喜欢将结果分配给数组.
my $pattern = qr"javascript:window.open\('([^']+)'\);"; my $content = "javascript:window.open('something');"; my @results = $content =~ m/($pattern)/; # expression return array # ( # q{javascript:window.open('something');'},# 'something' # )