文件包含功能定义和功能声明
eErrorT ChainCtrlUpdateCameraRoute(ChainCtrlT* pChainCtrl, RouteListItemT* pNewRoute, RouteListItemT* pCurrRoute);
eErrorT ChainCtrlSetJpgSnapshotFile(ChainCtrlT* pChainCtrl, RouteListItemT* pRoute, char * dst_chain, char *jpg_file_path)
{
}
我的代码
use strict;
use warnings;
use vars qw(@temp $index $i);
open(my $FILE, "< a.c") or die $!;
my @arr = <$FILE>;
foreach(@arr){
if($_ =~ /^ \S+ \s+ \S+ \s* \( (.+?) \) /xsmg) { # extracts function arguments
my $arg = $1;
my @arr = map /(\w+)$/, split /\W*?,\W*/, $arg;
print @temp = map "$_\n", @arr;
}
}
GIVES OUTPUT
pChainCtrl
pNewRoute
pCurrRoute
pChainCtrl
pRoute
dst_chain
jpg_file_path
需要输出
pChainCtrl
pRoute
dst_chain
jpg_file_path
我只需要从函数定义(ChainCtrlSetJpgSnapshotFile)而不是声明(ChainCtrlUpdateCameraRoute)中提取参数。
我需要查看带(..)的行是否没有“;”在同一行。但我无法获得正则表达式命令
答案 0 :(得分:2)
试图理解什么是技术(词汇)差异,我看到“;”在定义的最后,没有没有“;”在宣言结束时。另外你有一个{在下一行。
利用这些功能(如果它们是有用的,手指x')
#ignore lines with ; (followed by optional spaces) at the end
print @temp = map "$_\n", @arr
unless $_ =~ /;\s*$/;
一个选项可能是{在下一行,只打印上一行,如果你有一个匹配,这行以{开头。 (留作练习......)