А как в перле положить filehandle в переменную?

rosali

Туплю? Или нельзя? Хочу что-то такое:
  
use strict;
my %fh;
open FH1, ">f1";
open FH2, ">f2";
# а здесь надо как-то $fh{"f1"} = FH1; ...
my $f = some_condition ? "f1" : f2;
print {$fh{$f}} "test\n";

sergey_m

man perldata

Another use for typeglobs is to pass filehandles into a function or to
create new filehandles. If you need to use a typeglob to save away a
filehandle, do it this way:
$fh = *STDOUT;
or perhaps as a real reference, like this:
$fh = \*STDOUT;
See perlsub for examples of using these as indirect filehandles in
functions.

xsar

у меня работала такая шняга:

if ($var > 0)
{
$file_desc = STDOUT;
}
else
{
open (output_file, ">".$dir_name.$out_file);
$file_desc = output_file;
}
print $file_desc "blabla";

rosali

у меня работала такая шняга
Нет, при use strict так писать нельзя.

rosali

Действительно работает! спасибо.

Andr163

use strict, работает
Оставить комментарий
Имя или ник:
Комментарий: