2015-04-02 58 views
0

提取信息,我有多種功能解析文本文件,並在Perl

void fun_one() 

{ 

tempa=10; 

tempb=10; 

} 

void fun_two() 

{ 

tempc=12; 

tempd=13; 

} 

我想Perl代碼提取函數名,如果我輸入變量名稱的代碼;

說我搜索「tempa」,它應該提取「fun_one」到一個變量;

說我搜索「tempd」,它應該提取「fun_two」到一個變量;

我已提取的行數

open my $code, '<', 'code.txt' ; 

my $keyword = "tempa"; 

my $regex = qr|\b($keyword)\b|; 


while ($code>) 

{ 

    while (/$regex/g) 

    { 

     print "$.\n"; 

    } 

} 

輸出:3 我需要一些邏輯來提取機能的研究名稱。

在此先感謝

+0

打開我的$代碼, '<', 'search.txt'; my $ keyword =「tempa」; my $ regex = qr | \ b($ keyword)\ b |; ((/ $ regex/g)){ while(<$code>){ while print print「$。\ n」; }} – KCSR 2015-04-02 09:47:38

+1

請使用編輯功能添加您的問題。 – Jens 2015-04-02 09:48:23

回答

0

您可能需要一個解析器,而不是隻是正則表達式。

但是......

sub find_function_using_variable { 
    my $variable = shift; 
    my $last_func=""; 
    while (<>) { 
    $last_func = $1 if m/void (\w+)\(\)/; 
    print $last_func."\n" if m/\Q$variable\E/; 
    } 
}