User since
2003-09-26
147
Artikel
BenutzerIn
Hi,
gibt es einen Weg die Ausgabe von Code der in eval {} ausgeführt wird
in einen eine Variable, Datei Handler umzuleiten.
Noch eine Anmerkung der Code von eval muss in dem Kontext von
dem Script abgearbeitet werden damit scheidet glaube ich system() aus.
Gruss,
Frodus\n\n
<!--EDIT|frodus|1143811554-->
User since
2003-08-04
5872
Artikel
ModeratorIn
Was mir spontan dazu einfällt: STDOUT und STDERR merken, in Datei umleiten, hitnerher zurücksetzen und Dateien entsorgen. Aber das kann gut noch viel eleganter gehen.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
User since
2006-03-31
2
Artikel
BenutzerIn
Ja, das geht auch eleganter. Falls dir POE fuer diese Aufgabe etwas zu ueberladen scheint, dann kannst du etwas aehnliches auch mit select() machen:
my $code = 'print "hallo welt\n"; print "test\n\n"';
open(my $fh, ">", \my $out); # 'in memory' filehandle
my $old = select($fh); # default filehandle ist jetzt $fh
eval $code; # sollte klar sein
select($old); # default filehandle ist jetzt wieder STDOUT
close($fh); # der schoenheit halber
print "Das hier befindet sich in out:\n$out"
User since
2003-09-26
147
Artikel
BenutzerIn
Danke genau das was ich gesucht habe!
/Frodus
User since
2003-08-04
5872
Artikel
ModeratorIn
Ja sepp, das ist genau das was ich beschrieb... aber wie gesagt, es mag einen eleganteren Weg geben.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite