How Do I Point a File Handle to STDOUT (or Another File Handle) In Perl?

前端 未结 5 1812
不知归路
不知归路 2021-01-31 18:19

I want to make a quick script that writes to a file if a file is given, or stdout if no file is given. It would be much easier for me to do this if I could start the script by p

5条回答
  •  清歌不尽
    2021-01-31 18:44

    Some ways (globs):

    # Requires 2-arg open, unfortunately
    open(OUTPUT, "> ".($output || '-'))  or die;
    

    if ($output) {
       open(OUTPUT, '>', $output) or die;
    } else {
       *OUTPUT = *STDOUT;
    }
    

    if ($output) {
       open(OUTPUT, '>', $output) or die;
    } else {
       open(OUTPUT, '>&', \*STDOUT) or die;
    }
    

    Some ways (lexical var):

    # Requires 2-arg open, unfortunately
    open(my $fh, "> ".($output || '-'))  or die;
    

    my $fh;
    if ($output) {
       open($fh, '>', $output) or die;
    } else {
       $fh = \*STDOUT;
    }
    

    my $fh;
    if ($output) {
       open($fh, '>', $output) or die;
    } else {
       open($fh, '>&', \*STDOUT) or die;
    }
    

    Some ways (other):

    # Changes the default handle for .
    if ($output) {
       open(OUTPUT, '>', $output) or die;
       select(OUTPUT);
    }
    

提交回复
热议问题