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