sk has asked for the wisdom of the Perl Monks concerning the following question:
I am hoping someone could shed light on the problem that I have.
I am trying to a simple program that reads in some file and converts it to HTML and displays it the Links browsers (linux machine).
Once I am done creating the HTML file, I call "links" with the filename as argument using the system function. This works very well if I don't pipe in values. But when I use "head" to send values to the program, browser does not display anything, it just shows me a blank screen and none of the browser commands works. I had to ctrl+Z, kill %1 (even Ctrl+C does not work, that is my interrupt).
It sort of makes me feel that the pipe is not terminating properly and the forking another process from there is causing the problem (I could be horribly wrong :)). So I tried to close(STDIN) (bad idea?) and that makes the file to come up on the browser but the browser commands don't work anymore! Ctrl+C works now.
Here is my program - this does not do anything useful but the idea is there -
perl Version: 5.8.0 #!/usr/local/bin/perl -w # program ht use strict; my $file = "temp.html"; my $ret = 0; open(HTML,">$file"); print HTML ("<html><body>\n"); print HTML ("<B> $_ </B>") while(<>); print HTML ("\n</body></html>\n"); close(HTML); # close(STDIN); # links breaks if I close it explicitly $ret = system("links",$file); die "System command failed\n" if ($ret & 0xffff); Usage: ht myfile (works fine, displays HTML file in browser and terminates well) ht (RETURN) Enter values on STDIN ^D (works fine) head myfile | ht (without closing stdin) (no display on the browser)
Thanks a lot!
cheers
SK
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: system function problem
by lidden (Curate) on Sep 01, 2004 at 21:51 UTC | |
by sk (Curate) on Sep 02, 2004 at 02:21 UTC | |
by sk (Curate) on Sep 03, 2004 at 04:09 UTC | |
by sk (Curate) on Sep 19, 2004 at 21:31 UTC |