在Perl中捕获变量regexp中的组

在Perl中捕获变量regexp中的组,第1张

概述我有一堆我需要做的匹配,除了要读取的文件的名称和 regexp本身之外,它们都使用相同的代码.因此,我想将匹配转换为只接受文件名和regexp作为字符串的过程.但是,当我使用变量尝试匹配时,特殊的捕获变量停止被设置. $line =~ /(\d+)\s(\d+)\s/; 该代码正确设置$1和$2,但以下内容使它们未定义: $regexp = "/(\d+)\s(\d+)\s/";$line =~ 我有一堆我需要做的匹配,除了要读取的文件的名称和 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    }}
总结

以上是内存溢出为你收集整理的在Perl中捕获变量regexp中的组全部内容,希望文章能够帮你解决在Perl中捕获变量regexp中的组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1213607.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存