Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

Re: capture STDOUT when some jerk opened STDOUT to /dev/tty

by davido (Archbishop)
on Jan 07, 2013 at 17:31 UTC ( #1012070=note: print w/replies, xml ) Need Help??

in reply to capture STDOUT when some jerk opened STDOUT to /dev/tty

Capture::Tiny seems to handle it fine.

use Capture::Tiny qw( capture_stdout ); open STDOUT, '>/dev/tty' or die $!; my $output = capture_stdout { print "Hello world!\n"; }; print "<<<$output>>>\n";

...the output...

<<<Hello world! >>>

(as expected)

Update: ww has kindly reminded me that this is probably not a solution when you need to capture output of an external script. Apologies... and good luck! ;)


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1012070]
[Corion]: Yaerox: That's a somewhat hard problem. Encode solves the conversion part, but for guessing what encoding a file is in, that's the hard part
[Corion]: Yaerox: There is Encode::Guess, but that needs a limited set of inputs, and it also cannot handle multiple single-byte encodings
[Corion]: If you have a BOM, that's a really easy way to recognize UTF-8. Otherwise, you can try to decode a file from UTF-8, and if that works OK and doesn't crash, most likely the file was valid UTF-8
[Corion]: But as "ansi" (Latin-1?) is a single-byte encoding, any file is a valid ANSI file

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (6)
As of 2017-03-28 13:19 GMT
Find Nodes?
    Voting Booth?
    Should Pluto Get Its Planethood Back?

    Results (332 votes). Check out past polls.