What would cause a perl script to behave differently in different directories on one system? The system is running RedHat 3.4.3-9, and perl version 5.8.5.
The following perl script runs correctly when run from /home/test. After copying this script to /var/www/cgi-bin, it runs wrong: 1) Its stdout is directed somewhere other than back to the user, and 2)It does not receive the output from the call to pread.
Here is the perl script:
#!/usr/bin/perl my @cc = (); @cc = `pread cm 98`; print "Content-type: text/html\n\n"; print <<HTML; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML lang='en'> <HEAD> <TITLE> Hello World Status </TITLE> </HEAD> <BODY> hello world: $cc[0] </BODY> </HTML> HTML _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ When run from the directory /home/test as [xyz@daystar test]$ ./tst.pl the output is correct: Content-type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML lang='en'> <HEAD> <TITLE> Hello World Status </TITLE> </HEAD> <BODY> hello world: RETAIL WEBSALE </BODY> </HTML> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ There is no output when run from directory /var/www/cgi-bin as [xyz@daystar test]$ ./tst.pl _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ However, when run and piping output to 'more' using the command [xyz@daystar test]$ ./tst.pl | more the output is: Content-type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML lang='en'> <HEAD> <TITLE> Hello World Status </TITLE> </HEAD> <BODY> hello world: </BODY> </HTML>
In reply to perl stdout and backtick execute by solarity
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |