in reply to splinting a line of text by comma
#!/usr/bin/perl # https://perlmonks.org/?node_id=1226189 use strict; use warnings; while( <DATA> ) { if( /\|([^|,]*(?:,[^|,]*)+)\|/ ) { print "$`|$_|$'" for split /,/, $1; } else { print; } } __DATA__ some text FOO | some text BAR | oh , no , commas | some text BAZ | so +me text QUX some text FOO | some text BAR | single | some text BAZ | some text QU +X
Outputs:
some text FOO | some text BAR | oh | some text BAZ | some text QUX some text FOO | some text BAR | no | some text BAZ | some text QUX some text FOO | some text BAR | commas | some text BAZ | some text QU +X some text FOO | some text BAR | single | some text BAZ | some text QU +X
|
|---|