P4Perl P4::MergeData::RunMergeTool, quote filename arguments to protect from shell metacharacters
Also Perforce internal job088679 has been logged against p4api.
Using P4Perl to do a merge that uses P4::MergeData::RunMergeTool to call out to a bash script as the merge tool.
On Linux, if filenames have the shell metacharacter "(" in their names it causes bash to fail with "h: -c: line 0: syntax error near unexpected token `(' "
Other shell metacharacters would likely cause issues as well. This is expected shell behaviour and you would normally either quote a filename that contains metacharacters or escape the metacharacters.
For "(" it works on windows as "(" isn't a windows cmd shell metacharacter.
Quoting the arguments passed from RunMergeTool should escape the special meaning of any shell metacharacters.
It doesn't seem to be a P4Perl problem directly; invoking P4::MergeData::RunMergeTool, the control is handed over to the native P4.so.
Somewhere in P4.so, there's probably a call like system("mergeTool BASE THEIRS YOURS MERGED").
Perhaps that could be adjusted to allow for special characters especially in the parameters.