On 5/15/07, Tom Phoenix <[EMAIL PROTECTED]> wrote:
On 5/15/07, Jameson C. Burt <[EMAIL PROTECTED]> wrote:

> Letting my imagination loose,
> I ponder that  qx()  could have a fixed buffer size, which cannot be exceeded;
> or Unix takes in a block of size 2^16 but not of size 2^17.
> But I am probably only cluttering my mind with possibilities,
> when the problem is a simple looking  large-number-of-characters problem.
> Any ideas?

It seems that you've stumbled upon an undocumented implementation
limitation. Perl doesn't have too many of those, and it probably
shouldn't have any. Now that you have a test case, I encourage you to
run perlbug to submit it with a request that it be fixed or
documented. (I suspect, though, that the real limitation is in your OS
or shell, rather than Perl; so the only fix will be to the
documentation.)

But what's in the qx``, an entire shell script? Maybe there's a better
way to do whatever you're trying to do.

When a string within qx`` contains shell metacharacters, the string is
passed to /bin/sh on Unix systems. So you're starting a shell, and
giving it a large program to run. The shell is going to launch one or
more other programs. Maybe your program could launch those programs
directly, leaving the shell out of things, and saving that much memory
and time, not to mention bypassing any limitations the shell imposes.

Good luck with it!

snip

It might not be a Perl limitation.  If it is being passed off to sh
then he is probably hitting his OS's commandline length limit.  This
can generally be increased, but it is not a good idea since it affects
all running processes, not just this one.  Writing the SAS script to a
file and then calling sas with the file should work.  I have done it
before from both shell (usuallly Korn) and Perl.

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to