0

文件包含函数定义和函数声明

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;
     }
} 

给出输出

pChainCtrl
pNewRoute
pCurrRoute
pChainCtrl
pRoute
dst_chain
jpg_file_path

需要的输出

pChainCtrl
pRoute
dst_chain
jpg_file_path

我只需要从函数定义(ChainCtrlSetJpgSnapshotFile)而不是声明(ChainCtrlUpdateCameraRoute)中提取参数。

我需要查看带有 (..) 的行是否没有“;” 在同一行。但我无法获得正则表达式命令

4

1 回答 1

2

试图了解技术(词汇)差异是什么,我看到一个“;” 在定义的末尾,没有没有“;” 在声明的最后。此外,您在下一行有一个 {。

利用这些功能(如果它们是一致的,手指x'ed)

#ignore lines with ; (followed by optional spaces) at the end
print @temp = map "$_\n", @arr 
    unless $_ =~ /;\s*$/;

一个选项可能是在下一行查找 {,如果您有匹配项,则仅打印上一行,并且此行以 { 开头。(留作练习……)

于 2013-10-04T13:34:13.657 回答