logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

IO::TieCombine - produce tied (and other) separate but combined variables

Author

       Ricardo SIGNES <rjbs@cpan.org>

Methods

new
       The constructor takes no arguments.

   combined_contents
       This method returns the contents of all collected data.

   slot_contents
         my $str = $hub->slot_contents( $slot_name );

       This method returns the contents of all collected data for the named slot.

   clear_slot
         $hub->clear_slot( $slot_name );

       This sets the slot back to an empty string.

   fh
         my $fh = $hub->fh( $slot_name );

       This method returns a reference to a tied filehandle.  When printed to, output is collected in the named
       slot.

   scalar_ref
         my $str_ref = $hub->scalar_ref( $slot_name );

       This method returns a reference to scalar.  When appended to, the new content is collected in the named
       slot.  Attempting to alter the string other than by adding new content to its end will result in an
       exception.

   callback
         my $code = $hub->callback( $slot_name );

Name

       IO::TieCombine - produce tied (and other) separate but combined variables

Synopsis

       First, we set up a bunch of access points:

         my $hub = IO::TieCombine->new;

         my $str_ref  = $hub->scalar_ref('x');
         my $fh       = $hub->fh('x');
         my $callback = $hub->callback('x');

         tie my $scalar, $hub, 'x';
         tie local *STDOUT, $hub, 'x';

         tie local *STDERR, $hub, 'err';

       Then we write to things:

         $$str_ref .= 'And ';
         print $fh "now ";
         $callback->('for ');
         $scalar .= 'something ';
         print "completely ";
         warn "different.\n";

       And then:

         $hub->combined_contents;    # And now for something completely different.
         $hub->slot_contents('x');   # And now for something completely
         $hub->slot_contents('err'); # different.

       ACHTUNG!!  Because of a serious problem with Perl 5.10.0, output sent to a tied filehandle using "say"
       willnothavetheexpectednewline.  5.10.1 or later is needed.  Since 5.10.0 is broken in so many other
       ways, you should really upgrade anyway.

       ACHTUNG!!  Because of a different problem with Perls 5.10.1 - 5.16.3, if you send output to a tied
       filehandle using "say", and "$\" is undefined (which is the default), "$\"willnotberestoredto"undef"afterthe"say"!  This means that once you've used "say" to print to any tied filehandle, you
       have corrupted the global state of your program.  Either start your program by setting "$\" to an empty
       string, which should be safe, or upgrade to 5.18.0.

Version

       version 1.005

See Also