如何在Perl中将变量用作正则表达式

前端之家收集整理的这篇文章主要介绍了如何在Perl中将变量用作正则表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我认为这个问题是重复的,但搜索对我没有帮助.

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'
# )

猜你在找的Perl相关文章