追記
コメント欄で指摘されているように、 Net::SSH::Perl モジュールを利用したほうが無用なことで困らずに済みそうです。
use String::ShellQuote; my $command = q[gunzip -c /path/to/access_log.gz | perl -e 'while(<>){print}']; my $quoted_command = shell_quote($command); # ' => '\'' とクォートされる qx/ssh $server $quoted_command/;
しかしこれが何度やっても失敗するサーバがあり、エラーメッセージ Badly placed ()'s. でぐぐってみると csh/tcsh に特有のものらしく、確かに該当サーバのログインシェルは csh だった。 \(\) などとしなくてはならないらしい。が String::ShellQuote は Bourne Shell のクォートにしか対応していない。 csh め・・・。困った・・・。