0

perl - 需要将一组行添加到文件中

这是我最初的问题。

我现在有轻微的变化。我尝试了很长时间,但无法修复它。

pChainCtrl 
pChainName 
pDef 

pChainCtrl 
pArgs 

pChainCtrl
pChainCtrl 
name 
pChainTable

这些是少数函数的参数,需要将它们添加到“@param[in]”前面的.c文件内的函数模板中

.C 文件的一部分

/**
********************************************************************************
 *  @fn ChainCtrlSetJpgSnapshotFile                                             
 *  @brief
 *  @param[in ]    //arguments needs to be added here                 
 *  @return
********************************************************************************
*/
eErrorT ChainCtrlSetJpgSnapshotFile(ChainCtrlT* pChainCtrl, RouteListItemT* pRoute, char * dst_chain, char *jpg_file_path)
{
  ............
}

/**
********************************************************************************
 *  @fn ChainCtrlSetBgFile                                                      
 *  @brief
 *  @param[in ]         //arguments needs to be added here
 *  @return
********************************************************************************
*/
eErrorT ChainCtrlSetBgFile(ChainCtrlT* pChainCtrl, RouteListItemT* pRoute, char * dst_chain, char *bg_file_path)
{
  ....
}
/**
********************************************************************************
 *  @fn ChainCtrlSetColorBar                                                    
 *  @brief
 *  @param[in ]    //arguments needs to be added here                       
 *  @return
********************************************************************************
*/
eErrorT ChainCtrlSetColorBar(ChainCtrlT* pChainCtrl, RouteListItemT* pRoute, char * dst_chain,Boolean bOnOff)
{
  ..........
}

我尝试了用户@mpapec 共享的代码

但它只在第一个函数中添加参数。

use strict;
use warnings;

open(my $FILE4, "<", "chaincontroller.c") or die $!;
my $tl = do { local $/; <$FILE4> };
$tl =~ s|\s+$||mg;

open (my $FILE3, "<", "functions2.txt") or die $!;
my @array1 = map [ split ],
  do { local $/ = ""; <$FILE3> };

for my $arg (@array1) {
  my $s = $tl;
  $s =~ s|(param.+)|"$1   ". join "\n                 ", @$arg |e;
  print $s;
}
4

1 回答 1

1

尝试将for循环替换为,

$tl =~ s{(\@param.+)}{
  "$1   ". join "\n                 ", @{ shift @array1 };
}ge;
print $tl;
于 2013-09-30T14:50:08.333 回答