I have written a Perl script that parses the output of a command, looks for the work name in the output and print Does the function name
The command output looks like below
Here the work name is 'mutipleregexpression' but a part of the word 'press' is printed in new line .
Task Name: Multirection Press
This is regex which is currently in use in my code:
` $ Line = ~ / (. *): \ S * (. +) / `
The above regex is not printed in the new line which occupies part of the work name. It only captures 'monoleraxes', it does not capture 'press' because it is pressed into the new line.
So my question is, what is I
work to occupy the work name
Sub get_status {my ($ self) = @_; My $ function name; My% result; My $ line; $ Self-> {'Cmd'} = # Order goes here; # Command $ self- & gt; Execute ($ self-> {'cmd'}); $ Self- & gt; {'Stdout'} = $ self-> Get_stdout (); My $ count = 0; # To cross the output via parsing the output for the $ line (@ {$ self-> {'stdout'}} {chomp $ line; if ($ line = ~ m / ^ function \ sName \: \ S + (\ w +) / msx) {$ taskname = $ 1; $ count = 0;} Elsf ($ line = ~ /(.*):\s*(.+)/) {my $ key = $ 1; My $ value = $ 2; $ result {$ functionname} {++ $ count} = $ value;}} return \% result;}
Function call:
My $ result = $ data- & gt; get_status ('Multilanguage expression', '1'); info ('job status:'. $ Result);
Output:
Unconditioned Use of Great Value is concatenation (.) Or string 114 in line 20150317T194029 Information status is the job:
I do not even know the language, but you can try this logic :
var current_line = External string line in empty string lines ( If in the line "do something" with the ":" {then 1. last line (current_line) or 2. Line is the beginning of a new line (what comes next after "current_line =").} And {then 1. is the continuation of the last line LINE (current_line = current_line + line).}}
Hope this helps.
No comments:
Post a Comment