reopen STDIN
Jiri Polcar
polcar na physics.muni.cz
Úterý Říjen 7 15:53:52 MEST 2003
Zdravim,
pole @arg, ve kterem mam argumenty pro 'program'. Co ptrebuju je vystup
z 'program'. Nemohu pouzit
$program = '/bin/echo';
@argv = 'pepa';
$, = ' ';
open PIPE, "$program @arg|" or die;
protoze v @arg je (v realu) plno uvozovek, vykricniku, apostrofu a
podobne. Nemuzu to nechat interpretovat shell.
Proto chci zavolat
open STDOUT, ">file" or die;
system $program, @arg;
tohle skutecne zpusobi, ze se vystup 'program'u zapise do "file", ktery
si pak muzu precist. Potiz je, ze uz nejsem shopen znovu otevrit
/dev/stdout.
open STDOUT, ">/dev/stdout" or die;
sice neumre, ale kam se zapise
print "pepa\n";
nevim. Napadlo me, ze open(), kdyz dostane otevrenej filehandle, tak ho
nejdriv zavre a pak znovu otevre. Takz kdyz by nekdo (pajou) cetl STDOUT
a najednou by se zavrel, znamenalo by to pro nej konec vstupu. Takze se
to asi musi nejak obejit. Jak? Nebo neco delam spatne?
--
JP
Další informace o konferenci Perl