http://qs321.pair.com?node_id=1074981

demichi has asked for the wisdom of the Perl Monks concerning the following question:

Hi all,

I really stuck for a while with a regular expression. I get an output (from an application) like this:
PID POLS U(%) POOL_NAME Seq# Num LDEV# H(%) VCAP(%) TYPE PM 003 POLN 0 Bad name with spaces 13453 2 61443 80 - OPEN N 002 POLN 52 DemoSolutions 54068 7 61454 80 - OPEN N

In words : Line starts, 1-n characters, 1-n spaces as delimiter, 1-n characters with 0-n spaces, 1-n spaces as delimiter, 1-n characters, 1-n spaces as delimiter, 1-n characters with 0-n spaces, 1-n spaces as delimiter, 1-n spaces as delimiter, 1-n characters,1-n spaces as delimiter, 1-n characters,1-n spaces as delimiter, 1-n characters,1-n spaces as delimiter, 1-n characters,1-n spaces as delimiter, 1-n characters,1-n spaces as delimiter, 1-n characters,1-n spaces as delimiter, 1-n characters, line ends

What I would like to generate is a file like:

PID;POLS;U(%);POOL_NAME;Seq#;Num;LDEV#;H(%);VCAP(%);TYPE;PM; 003;POLN;0;Bad name with spaces;13453;2;61443;80;-;OPEN;N; 002;POLN;52;Demo;54068;7;61454;80;-;OPEN;N;

I don't get it managed to sort out the spaces in the names and as delimiter. I tried something like this

$line =~ /^(\w+)\s+(\w+)\s+([\w\(\)\%-]+)\s+([\s\w]*?\w+)\s+([#\w]+)\s+(\w+)\s+([#\w]+)\s+([\w\(\)\%-]+)\s+([\w\(\)\%-]+)\s+(\w+)\s+(\w+)\s+/;

and get something like this:
PID;POLS;U(%);POOL_NAME;Seq#;Num;LDEV#;H(%);VCAP(%);TYPE;PM; 003;POLN;0;Bad;name;with;spaces;13453;2;61443;80; 002;POLN;52;Demo;54068;7;61454;80;-;OPEN;N;
=> Without sucess.

I would be very happy if you can help me.

regards deMichi