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


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

Probably better to place quotes around the command, for example:
$cmd = "'------------- Hello World ------------'";
or use somthing like q()

Also, you might like to use "end of options":
my $result = `echo -- $cmd | grep -- '\-\-\-\-'`;

Replies are listed 'Best First'.
Re^4: sh: -c: line 1: syntax error near unexpected token `|'
by Anonymous Monk on May 10, 2012 at 13:54 UTC

    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.