http://www.perlmonks.org?node_id=991363


in reply to Simple Perl print() output redirect to html/webpage.

Last time I did something like that, I just used a shell script wrapped around my perl scraper, and did the upload with scp:

#!/bin/bash # scrape targets and load files to server . $HOME/.bash_profile cd $HOME/MyBot FILENAME=`date "+scrapefiles/scrapetarget%C%y%m%d.txt"` perl MyRobot.pl > $FILENAME scp $FILENAME myusername@mydomain.com:templistings

"templistings" is the remote directory I load my scrapings into, where a cron job looks for them periodically and loads them into a mysql database. In your case you would just specify the directory where you want your file to go in your web structure and just write it as a .html file. You could delete the local copy after, but I keep mine in an archive.

An alternative would be to use something like Net::SCP to do the whole thing from within your perl program. You could probably also have your program ssh in to server2 (with Net::SSH::Perl) and write the file directly without making a local copy, but that seems a little more fragile to me.

If the problem is that you need it to run from inside a PHP page, that's a PHP problem, and there's probably better places to ask (though some here might be able to help).

Replies are listed 'Best First'.
Re^2: Simple Perl print() output redirect to html/webpage.
by hmb104 (Sexton) on Sep 03, 2012 at 06:48 UTC

    Thanks for taking the time to reply bitingduck. Actually my question is about displaying my Perl output to html webpage

    script.pl is on server1 and html page runs on server2. From server2 I can call my Perl script from server2 as following:

    ssh myusername@server1 ./script.pl arg

    The script will display some output. I want to know how I can capture this output on test.html on server2?

    server2 is a pure webserver. All my servers are Unix

      This question really isn't in Perl-land any more, but a CGI question. This CGI script should do it:

      #!/bin/sh echo "Content-Type: text/plain" echo ssh myusername@server1 ./script.pl arg

      I'm not sure why your php solution did not work. Maybe you wanted the passthru function?

        Beware, though. If you want to embed the script's output in HTML (instead of plaintext as I did there), you need to make sure that it doesn't contain any of the following characters: <>& (and maybe '"). Instead, escape them properly. For that, the pass-through function php supplies doesn't work.

      Are you directing your output from the script to the right place? And are the permissions set correctly for you to be able to write there? As anon pointed out, it's not obvious why it's not working for you. When you mention user id problems with it, that suggests that it might be working fine except that you don't have write permission to the web server path from whatever user you're running the script as.