in reply to Re^7: Cannot access HTTP::Response content properly
in thread Cannot access HTTP::Response content properly

Here is the background info you requested. I am basically trying to call a Perl script from within a C program. However, I don't want to just make a system() call. I want to be able to capture the output (stdout) from the Perl script. If I run the Perl script on it's own, I get the output displayed to stdout. If I call it from the C program I do not. At first I thought this was a problem with my C program, but I am pretty sure it is not. Why? Because if I assign a random string (aka "Hello World") to a variable in that same Perl script and execute a print command from inside it, THEN my C program is able to capture the output from stdout. But if I use the "print $res->decode_content" command it does not. Just for clarification, here is a portion of the C program:

char command[] = "/home/user/scripts/PerlScript.pl"; . . fp = popen(command, "r"); buffer = (char *)malloc(sizeof(char) * bufSize); while( fgets(buffer, bufSize, fp) != NULL) fputs(buffer, stdout); pclose(fp); free(buffer);

The above program calls the Perl script I have written that is in question. Again, if I do the following it prints when called from the C program:

my $randomVar = "Hello World\n"; print $randomVar;

But if I do this, it will NOT print from the C program (unless I call the Perl script by itself from the command line):

my $res = $ua->get('http://SOMEURLHERE'); print $res->decoded_content;

Replies are listed 'Best First'.
Re^9: Cannot access HTTP::Response content properly
by ikegami (Patriarch) on Nov 03, 2009 at 20:09 UTC

    What are you talking about??? We were talking about downloading and encoding problems. Did you post in the wrong place?

      Sorry for the confusion. If you go back to the very beginning of this thread, you will see that my last explanation is why we are at this point. I was trying to properly see the output of the Perl script. I couldn't, so I tested it out by writing the output to a file from within the Perl script. I thought it didn't work at first. However, I discovered that it did except with all kinds of character encoding. I guess what is happening, is the encoding issue you are talking about is somehow interfering with my C program's ability to capture and/or display the output from the Perl script of which I am calling. In a nutshell I want to:
      1) call my perl script from my C program, 2) Perl script then issues a HTTP GET request, returns and prints out result, 3) C program captures this output that was printed to stdout

      I have steps 1 and 2 working. However, thanks to you, I have discovered that I have some kind of hurdle here with the character encoding that is preventing #3 and I don't know what to do now.

        The server sent you a document. You obtain it using ->decoded_content(charset => 'none'). You seem to think there's something wrong with the document. To fix it requires knowing why you think the document is wrong, and what kind of of document it is in order to fix it.

        In a nutshell I want to: 1) call my perl script from my C program, 2) Perl script then issues a HTTP GET request, returns and prints out result, 3) C program captures this output that was printed to stdout

        Then make a post about that. Will you please stop changing the subject?

        The server sent you a document. You obtain it using ->decoded_content(charset => 'none'). You seem to think there's something wrong with the document.

        To fix it requires knowing why you think the document is wrong, and what kind of of document it is in order to fix it.