加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Perl中捕获变量regexp中的组

发布时间:2020-12-16 06:07:40 所属栏目:大数据 来源:网络整理
导读:我有一堆我需要做的匹配,除了要读取的文件的名称和 regexp本身之外,它们都使用相同的代码.因此,我想将匹配转换为只接受文件名和regexp作为字符串的过程.但是,当我使用变量尝试匹配时,特殊的捕获变量停止被设置. $line =~ /(d+)s(d+)s/; 该代码正确设置$1
我有一堆我需要做的匹配,除了要读取的文件的名称和 regexp本身之外,它们都使用相同的代码.因此,我想将匹配转换为只接受文件名和regexp作为字符串的过程.但是,当我使用变量尝试匹配时,特殊的捕获变量停止被设置.

$line =~ /(d+)s(d+)s/;

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

$regexp = "/(d+)s(d+)s/";
$line =~ /$regexp/;

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

谢谢,
贾里德

解决方法

引用你的正则表达式字符串usin qr:

my $regex = qr/(d+)s(d+)s/;
my $file =q!/path/to/file!;
foo($file,$regex);

然后在子:

sub foo {
my $file = shift;
my $regex = shift;

open my $fh,'<',$file or die "can't open '$file' for reading: $!";
while (my $line=<$fh>) {
    if ($line =~ $regex) {
        # do stuff
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读