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 に答える