Skip to content

stsc/Hook-Output-File

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NAME
    Hook::Output::File - Redirect STDOUT/STDERR to a file

SYNOPSIS
     use Hook::Output::File;

     {
         my $hook = Hook::Output::File->redirect(
             stdout => '/tmp/1.out',
             stderr => '/tmp/2.out',
         );

         saved();

         undef $hook; # restore previous state of streams

         not_saved();
     }

     sub saved {
         print STDOUT "..."; # STDOUT output is appended to file
         print STDERR "..."; # STDERR output is appended to file
     }

     sub not_saved {
         print STDOUT "..."; # STDOUT output goes to STDOUT (not to file)
         print STDERR "..."; # STDERR output goes to STDERR (not to file)
     }

DESCRIPTION
    "Hook::Output::File" redirects "STDOUT/STDERR" to a file.

METHODS
  redirect
     my $hook = Hook::Output::File->redirect(
         stdout => $stdout_file,
         # and/or
         stderr => $stderr_file,
     );

    Installs a file-redirection hook for regular output streams (i.e.,
    "STDOUT/STDERR") with lexical scope.

    A word of caution: do not intermix the file paths for "STDOUT/STDERR"
    output or you will eventually receive unexpected results. The paths may
    be relative or absolute; if no valid path is provided, an usage help
    will be printed (because otherwise, the "open()" call might silently
    fail to satisfy expectations).

    The hook may be uninstalled either explicitly or implicitly; doing it
    the explicit way requires to unset the hook variable (more concisely, it
    is a blessed object), whereas the implicit end of the hook will
    automatically be triggered when leaving the scope the hook was defined
    in.

     {
         my $hook = Hook::Output::File->redirect(
             stdout => '/tmp/1.out',
             stderr => '/tmp/2.out',
         );

         some_sub();

         undef $hook; # explicitly remove hook

         another_sub();
     }
     ... # hook implicitly removed

AUTHOR
    Steven Schubiger <schubiger@cpan.org>

LICENSE
    This program is free software; you may redistribute it and/or modify it
    under the same terms as Perl itself.

    See <http://dev.perl.org/licenses/>

About

Redirect STDOUT/STDERR to a file

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages