Linux 查找仅在特定子例程中搜索模式

Linux 查找仅在特定子例程中搜索模式,linux,perl,Linux,Perl,我想在.pm文件中单独搜索特定子例程中的模式。 例如,我正在搜索$pattern。这个$pattern可以在pm文件的子例程中找到,但是我只想在一个特定的子例程中检查$pattern是否存在,如果这个模式存在,我想执行一些操作 if (/subroutine\{(.*)pattern(.*)\}/){ #some code; } else { #some code } 这样行吗? 你能帮我一下吗?你可以包含子例程的名称,并使正则表达式更具体到你要搜索的子例程。比如: /subro

我想在.pm文件中单独搜索特定子例程中的模式。 例如,我正在搜索$pattern。这个$pattern可以在pm文件的子例程中找到,但是我只想在一个特定的子例程中检查$pattern是否存在,如果这个模式存在,我想执行一些操作

 if (/subroutine\{(.*)pattern(.*)\}/){
  #some code;
 }
else {
  #some code
 }
这样行吗?
你能帮我一下吗?

你可以包含子例程的名称,并使正则表达式更具体到你要搜索的子例程。比如:

/subroutinename\{(.*)$pattern(.*)\}/

这将在子例程的范围内搜索$pattern。

您可以包含子例程名称,并使正则表达式更特定于要搜索的子例程。比如:

/subroutinename\{(.*)$pattern(.*)\}/
这将在子例程的范围内搜索$pattern。

的设计目的与此完全相同(它用作其后端)。在本例中,我们只指定一个要查找的文件(它还可以在目录或内存模块中进行迭代)

然后,我们用我们的模式创建一个正则表达式(
data
是我们在这里的搜索词),最后,
只包含一个子项,它将排除文件中的所有其他子项。我们正在查看
name()
sub):

这是我在
sub.pm
文件中查找的sub:

sub name {

    trace() if $ENV{TRACE};

    my $self = shift;
    return $self->{data}{name};
}
返回是一个数组引用,因此如果它填充了任何内容(搜索词所在的每个子项的名称,在本例中,我们只查找一个),则存在一个匹配项:

输出:

name
被设计来做完全像这样的事情(它使用作为它的后端)。在本例中,我们只指定一个要查找的文件(它还可以在目录或内存模块中进行迭代)

然后,我们用我们的模式创建一个正则表达式(
data
是我们在这里的搜索词),最后,
只包含一个子项,它将排除文件中的所有其他子项。我们正在查看
name()
sub):

这是我在
sub.pm
文件中查找的sub:

sub name {

    trace() if $ENV{TRACE};

    my $self = shift;
    return $self->{data}{name};
}
返回是一个数组引用,因此如果它填充了任何内容(搜索词所在的每个子项的名称,在本例中,我们只查找一个),则存在一个匹配项:

输出:

name

如果(/subroutinename\{(.*)$pattern(.*)}/){some code}
这会起作用吗?注释中出现的
subroutinename
是什么?在新行中不匹配,大括号可能不在子名称旁边(甚至不在同一行)等等。
if(/subroutinename\{(.*)$pattern(.*)\}/){some code}
这行吗?注释中出现了什么
subroutinename