matching multiple line string with perl regex and doing a replace

前端 未结 4 2110
孤城傲影
孤城傲影 2021-01-24 00:06

I have a source file where I use a macro to do logging. Typical logging lines look like:

STDOUT_LOG(logDEBUG4) << \"a single line log text\" << aVari         


        
4条回答
  •  甜味超标
    2021-01-24 00:32

    Here is a way to do it:

    use Modern::Perl;
    
    my @lines = (
    'STDOUT_LOG(logDEBUG4) << "a single line log text" << aVariable;',
    '        STDOUT_LOG(logDEBUG4)
                << bsd->sensorName
                << " trainMinValueInWin = " << value.trough
                << " trainMaxValueInWin = " << value.peak
                << " |";'
    );
    for (@lines) {
        s/(STDOUT_LOG\(.*?)\)(\s*)<<(.*?);/$1, $2$3);/gs;
        say;
    }
    

    Output:

    STDOUT_LOG(logDEBUG4, "a single line log text" << aVariable);
            STDOUT_LOG(logDEBUG4, 
                bsd->sensorName
                << " trainMinValueInWin = " << value.trough
                << " trainMaxValueInWin = " << value.peak
                << " |");
    

提交回复
热议问题