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

时间:2013-09-30 11:51:47

标签: perl

pChainCtrl 
pChainName 
pDef 

pChainCtrl 
pArgs 

pChainCtrl
pChainCtrl 
name 
pChainTable

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

TEMPLATE

/**
********************************************************************************
*  @fn                                                            
*  @brief
*  @param[in ]                                                         
*  @return
********************************************************************************
*/

我的代码

use strict;
use warnings;


open(FILE3,"< functions2.txt")or die $!;
my @array1 = <FILE3>;

foreach my $arg (@array1){
    open(my $FILE4,"+< function_template.txt")or die $!;;
    seek( $FILE4, 197, 0);     // takes pointer infront of @param[in ]
    chomp $arg;
    print $FILE4 "$arg";
close($FILE4);
}
close(FILE3);

它逐一添加参数。

我需要将每组参数添加到文件模板中,这些参数将被复制到别处(我有代码),然后转到下一组参数

需要输出

/**
********************************************************************************
*  @fn                                                            
*  @brief
*  @param[in ]   pChainCtrl 
                 pChainName 
                 pDef                                                        
*  @return
********************************************************************************
*/

1 个答案:

答案 0 :(得分:1)

您可以阅读模板一次,并将其用于每组参数

use strict;
use warnings;

open(my $FILE4, "<", "function_template.txt") 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;
}