在Perl中捕获变量regexp中的组

Jar*_*red 3 regex perl

我有一堆我需要做的匹配,除了要读取的文件的名称和regexp本身之外,它们都使用相同的代码.因此,我想将匹配转换为只接受文件名和regexp作为字符串的过程.但是,当我使用变量尝试匹配时,特殊的捕获变量停止被设置.

$line =~ /(\d+)\s(\d+)\s/;
Run Code Online (Sandbox Code Playgroud)

该代码正确设置$ 1和$ 2,但以下内容未定义:

$regexp = "/(\d+)\s(\d+)\s/";
$line =~ /$regexp/;
Run Code Online (Sandbox Code Playgroud)

我有什么想法可以解决这个问题吗?

谢谢,贾里德

JSB*_*ոգչ 7

使用qr而不是引号:

$regexp = qr/(\d+)\s(\d+)\s/;
$line =~ /$regexp/;
Run Code Online (Sandbox Code Playgroud)