When you invoke it on the command line, your shell strips off the quotes. The ksh script doesn't see the "s in the first
"FAMP.001.DAT", but
does see them the second one precisely because they are quoted. (The same goes to for the other arguments.)
So, in Perl, you don't need to do any special quoting since your invocation doesn't pass through an interactive shell. You don't need to do so much string interpolation inline, either; a clean way of adding the quotes is with a helper function. This should work:
$return_val = system($grph_gen_multi_seq,
$data_source_contents[2], myquote($data_source_contents[2]),
$seq_num, myquote($seq_num),
$data_source_contents[1]);
# ...
sub myquote {
my($str) = @_;
return "\"$str\"";
}