2013-09-30 28 views
2
pChainCtrl 
pChainName 
pDef  

pChainCtrl 
pArgs  

pChainCtrl 
pChainCtrl 
name  
pChainTable 

這些都是一些功能參數,需要將它們添加到一個函數模板,在前面的「@參數[中]」perl的 - 需要添加的行集到一個文件

模板

/** 
******************************************************************************** 
* @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

您可以讀一次模板,並將其用於每組參數,

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

它工作正常。感謝在這種情況下幫助我,還有其他一些情況。 –

+0

@Ad-vic沒問題 –

相關問題