Does ps(1) also truncate at the same points? The kernel might only store so many characters or the regular API for retrieving process information only return a fixed-width field.
While looking up CPAN docs for Proc::ProcessTable, I found P9Y::ProcessTable, which seems to be a pure-Perl attempt at a similar module. Reading its code suggests that Solaris puts the command line and the filename in fixed-width fields in a "psinfo" file. I suspect that ps(1) will have the same problem and that you have encountered kernel limitations on Solaris and HP-UX.
Further digging into the Proc::ProcessTable source shows that the HP-UX and Solaris ports more-or-less directly return information from the kernel. Unless there are other ways to get the command line and filename, I think that you are stuck.
Look around in /proc/<PID>. On Linux, for example, the overall process status file contains only a command name, but the entire argv array is in cmdline.