Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[PERL] Backtick: Wel output in shell, maar niet in browser

Pagina: 1
Acties:

Verwijderd

Topicstarter
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:

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?

Verwijderd

Voer je perl script eens uit onder ze dezelfde gebruiker als je server. Ik denk dat je Server alleen execute rechten heeft binnen ze eigen map maar dat systeem commando's niet zijn toegestaan:)

  • Sendy
  • Registratie: September 2001
  • Niet online
Bufferen zou verklaren waarom de uitvoer halverwege stopt; ik ken geen andere reden waarom dat zou gebeuren, misschien een SIGKILL, maar dat is niet waarschijnlijk. Maar dan moet het wel een langlopend programma zijn. Is dat het ook?

Werkt jouw perl script wel met andere programma's?

edit:

Trouwens, die autoflush()s en $| = 1 lijken mij dubbelop.

[ Voor 29% gewijzigd door Sendy op 01-03-2008 23:43 ]


  • maleadt
  • Registratie: Januari 2006
  • Laatst online: 05-11 22:08
Heb het zelfde probleem al gehad, backticks die niet werken in een browser omgeving. Voeg eens het pad naar de binaries toe.