In Perl (maar ook PHP en andere scripttalen) heb je backticks om een externe commando op te roepen, en de waarde op te slaan in een scalar. Voorbeeld:
Nu gebruik een programma in de shell, en sla ik de output van dat programma op in een variabel in Perl. Het probleem dat ik heb is dat wanneer ik mijn script uitvoer in de shell, dat ik dan ook gewoon de output krijg in de shell. Wanneer ik de script laad in mijn browser als een CGI script, dan krijg ik niks te zien, of soms maar een gedeelte van de output (wordt in middle of nowhere afgebroken).
Ik dacht dat het misschien lag aan de buffering. Dus heb ik het volgende in het begin van mijn script gezet:
Dit help echter niet. Ik snap er dus niks meer van. Waarom wordt het wel gewoon geoutput in de shell (gewoon aanroepen met perl script.cgi), maar niet in de browser? Heeft iemand een idee, of tips, suggesties?
code:
1
| my $var = `ls -l`; |
Nu gebruik een programma in de shell, en sla ik de output van dat programma op in een variabel in Perl. Het probleem dat ik heb is dat wanneer ik mijn script uitvoer in de shell, dat ik dan ook gewoon de output krijg in de shell. Wanneer ik de script laad in mijn browser als een CGI script, dan krijg ik niks te zien, of soms maar een gedeelte van de output (wordt in middle of nowhere afgebroken).
Ik dacht dat het misschien lag aan de buffering. Dus heb ik het volgende in het begin van mijn script gezet:
code:
1
2
3
4
5
6
7
| use IO::Handle; use locale; use POSIX qw( locale_h ); setlocale( LC_CTYPE, 'iso_8859_1' ); STDOUT->autoflush(); STDERR->autoflush(); $| = 1; # need either this or to explicitly flush stdout, etc. |
Dit help echter niet. Ik snap er dus niks meer van. Waarom wordt het wel gewoon geoutput in de shell (gewoon aanroepen met perl script.cgi), maar niet in de browser? Heeft iemand een idee, of tips, suggesties?