in reply to Re^3: sh: -c: line 1: syntax error near unexpected token `|'
in thread sh: -c: line 1: syntax error near unexpected token `|'

Regarding quotes, the OP might find a module that provides shell escaping useful. Such as String::ShellQuote.

printf is probably more surefire than echo there:

printf "%s" "$cmd" | grep -e '----'

But shelling out is very error-prone (as the OP discovered) and pretty vain when the code can be reproduced in Perl in a few lines.