Perl — условная печать на консоль или в файл

Я новичок в Perl, и мне нужна помощь с условным перенаправлением на консоль или выходной файл. Может ли кто-нибудь сказать мне, как лучше всего это сделать?

1) Количество предложений, которые мне нужно напечатать, велико, поэтому я не хочу использовать несколько операторов if для каждого предложения, которое я хочу напечатать
2) Я хочу иметь возможность печатать на консоли для быстрого просмотра или перенаправить его в выходные файлы (количество выходных файлов, которые могут быть созданы, может быть любым)
3) Если я создам подпрограмму, как указано, количество раз, когда я открываю определенный файл, может стать очень большим
4) Текст/предложение, которое я хочу напечатать на консоль или в файл, сложное (может быть другой код perl/C, который я печатаю)

sub print_2_file_or_console {
    my ($print_to_file, $filename, $text) = @_;
    if($print_to_file==1) {
    #open file and redirect text to file

    #close file
    }
    else {
    print "$text\n";
    }
    }

person user2805732    schedule 23.09.2013    source источник


Ответы (1)


Стандартный вывод - это просто дескриптор, как и открытый файл.

    my $fh;
    open($fh, ">". $file_name) or die $!;
    my $outh = $print_to_file ? $fh : *STDOUT;
    print $outh $some_string;
    close($fh);

Обратите внимание, что этот код всегда будет создавать файл.

person amaslenn    schedule 24.02.2014