Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Three argument version of open '>-'

by LanX (Saint)
on Mar 01, 2021 at 22:21 UTC ( [id://11128969]=note: print w/replies, xml ) Need Help??


in reply to Three argument version of open '>-' (updated)

Maybe try open $fh, '>&', STDOUT;

behavior looks consistent when autoflush is activated.

Otherwise please use a similar code-template for a SSCCE.

use v5.12; use warnings; use Data::Dump qw/pp dd/; sub tst { my $vers = shift; open STDOUT, ">-"; # restore STDOUT $|=1; say STDERR "********* testing $vers\n"; my $fh; open $fh, ">-" if $vers eq "open2"; $fh = \*STDOUT if $vers eq "copyref"; open $fh, '>&', STDOUT if $vers eq "redirect"; $fh->autoflush; say "$vers 1"; close STDOUT; say $fh "$vers 2"; say "$vers 3"; } tst("redirect"); tst("open2"); tst("copyref");

-*- mode: compilation; default-directory: "d:/tmp/pm/" -*- Compilation started at Mon Mar 1 23:21:00 C:/Strawberry/perl/bin\perl.exe -w d:/tmp/pm/redirect_STDOUT.pl ********* testing redirect redirect 1 redirect 2 say() on closed filehandle STDOUT at d:/tmp/pm/redirect_STDOUT.pl line + 32. ********* testing open2 open2 1 open2 2 say() on closed filehandle STDOUT at d:/tmp/pm/redirect_STDOUT.pl line + 32. ********* testing copyref copyref 1 say() on closed filehandle STDOUT at d:/tmp/pm/redirect_STDOUT.pl line + 30. say() on closed filehandle STDOUT at d:/tmp/pm/redirect_STDOUT.pl line + 32. Compilation finished at Mon Mar 1 23:21:00

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

Replies are listed 'Best First'.
Re^2: Three argument version of open '>-'
by choroba (Cardinal) on Mar 01, 2021 at 23:06 UTC
    OP updated witn a SSCCE.

    map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]
      Thanks, it's clearer now, you want that the "copy FH" fails if STDOUT is closed, but without emitting a warning.

      Sorry, no clue yet...

      update

      BTW: you can automatize your test-runs with an exec $0 #Test if @ARGV is empty :)

      and maybe you should also consider testing different states of autoflush.

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11128969]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (7)
As of 2024-05-20 14:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found