In a module, I have a function, lcroak(), that redirects croak messages to a logfile. This is called selectively, so regular croak messages go to STDERR if the user wishes. It works, and it works the way I expect it, by closing and reopening STDERR with a previously-selected filename as an argument.
Problem: I can't get it to pass my lcroak.t test. If I call lcroak directly, then the test dies, as you'd expect when you call croak. But that's considered a failure by Test::Harness's prove utility.
Alternately, I can throw an eval loop around the lcroak call. But that redirects croak messages into $@, so subsequent tests, to see if my redirection worked, fail.
Anyone see a way around this?