Jameson C. Burt wrote: > Within Perl, I construct programs in other programming languages > and submit the result to a Unix (Linux or IBM AIX) operating system > with 2GB to 8GB memory. > I submit such a program to the operating system using Perl's > qx() > Unfortunately, giving qx() over 128,420 characters (about and can vary > by a few characters) then returns nothing. > Yet, giving qx() 128,000 characters gets properly executed by the > operating system. > > Following is an example, > expedited from my original test that actually had 1270 lines. > Only with fewer lines (eg, replace 1370 by 1269) will this program output > "Last line of large program!" > Here's the program that constructs > and tries giving qx() over 128,000 characters of code: > #!/usr/bin/perl -w > $shorty = ' ' x 99 . '#' . "\n" ; #100/101 characters > #Repeat 1370 lines of $shorty into @manylines: > # foreach $i (0..1269) {$manylines[$i] = $shorty} ; #Succeeds > foreach $i (0..1370) {$manylines[$i] = $shorty} ; > $manylines[$#manylines + 1] = 'echo "Last Line of large program!"' ;
You can simplify that to: my @manylines = ( ( ' ' x 99 . "#\n" ) x 1371, 'echo "Last Line of large program!"' ); > print qx(@manylines) ; > # system(qq(@manylines)) ; #Same problem. Your line of code is a comment (The # character starts a comment in shell) which is why nothing is returned: $ perl -e' my @manylines = ( ( " " x 99 . "#\n" ) x 1371, q[echo "Last Line of large program!"] ); print [EMAIL PROTECTED]; ' | wc 0 0 0 $ perl -e' my @manylines = ( ( " " x 99 . "\n" ) x 1371, q[echo "Last Line of large program!"] ); print [EMAIL PROTECTED]; ' | wc 1 5 28 $ perl -e' my @manylines = ( ( " " x 99 . "\n" ) x 1371, q[echo "Last Line of large program!"] ); print [EMAIL PROTECTED]; ' Last Line of large program! > However, appending the following lines to the above code > will properly execute those 1370 lines. > open(OUTFILE, ">/tmp/zz.out") ; > print(OUTFILE @manylines) ; > close(OUTFILE) ; > system("bash /tmp/zz.out") ; > While I can run this latter code, it both adds more code > and adds a file to the operating system's filesystem. > > Can qx() accept large numbers of characters, > perhaps using some simple technique? When it is saved as a file the shell (bash) ignores the comment lines. John -- Perl isn't a toolbox, but a small machine shop where you can special-order certain sorts of tools at low cost and in short order. -- Larry Wall -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/