使用perl和字符串连接解析文件

时间:2013-12-12 12:59:11

标签: perl

我正在尝试解析文件并收集不同模块中的不匹配类型并生成xls。下面是我需要解析的报告模式(但实际的报告模式并不简单,如下所示):

outsocket ports in design1 not in design2
a 
b
Insocket ports in design1 not in design2
g
h

在日志中可以有许多设计名称(使用$module推送到模块列表),但此模式不会更改。(<>中的Insocket / outsocket / othertype端口不在{{1}中})

下面是我的核心代码。我遇到了这个代码的问题而且它无法正常工作(尤其是字符串连接),请帮我解决这个问题。

<>

1 个答案:

答案 0 :(得分:0)

以下是一些猜测和一般性建议。我不确定这会解决你的问题,但它可能有所帮助:

  1. 前两个正则表达式在}${design1}}中有一个额外的${design2}}。不确定这是否存在于原始程序中,或者是否是在此处发布时出现的错误。

  2. 看起来您正在使用字符串连接来构建$result变量的名称,因此您可以将该字符串用作另一个变量的名称,例如$type_i_n_code_module_a。我强烈建议您减少混淆,改为使用哈希:

    %result = ();
    while ($line = <FH>) {
        ...
        $result_key = $mismatch_type . "_code_ " . $module;
        $result{$result_key} = $result{$result_key} . $line;
    }
    
    ...
    foreach $module (@module_list) {
        foreach $each_mismatch (@mismatch_type_list) {
            $result_key = $mismatch_type . "_code_ " . $module;
            print FH2" $result{$result_key},";
        }
    }