App-Info
view release on metacpan or search on metacpan
lib/App/Info/Handler/Print.pm view on Meta::CPAN
use strict;
use App::Info::Handler;
use vars qw($VERSION @ISA);
$VERSION = '0.57';
@ISA = qw(App::Info::Handler);
# Register ourselves.
for my $c (qw(stderr stdout)) {
App::Info::Handler->register_handler
($c => sub { __PACKAGE__->new( fh => $c ) } );
}
=head1 INTERFACE
=head2 Constructor
=head3 new
my $stderr_handler = App::Info::Handler::Print->new;
$stderr_handler = App::Info::Handler::Print->new( fh => 'stderr' );
my $stdout_handler = App::Info::Handler::Print->new( fh => 'stdout' );
my $fh = FileHandle->new($file);
my $fh_handler = App::Info::Handler::Print->new( fh => $fh );
Constructs a new App::Info::Handler::Print and returns it. It can take a
single parameterized argument, C<fh>, which can be any one of the following
values:
=over 4
=item stderr
Constructs a App::Info::Handler::Print object that prints App::Info event
messages to C<STDERR>.
=item stdout
Constructs a App::Info::Handler::Print object that prints App::Info event
messages to C<STDOUT>.
=item FileHandle
=item GLOB
Pass in a reference and App::Info::Handler::Print will assume that it's a
filehandle reference that it can print to. Note that passing in something that
can't be printed to will trigger an exception when App::Info::Handler::Print
tries to print to it.
=back
If the C<fh> parameter is not passed, C<new()> will default to creating an
App::Info::Handler::Print object that prints App::Info event messages to
C<STDOUT>.
=cut
sub new {
my $pkg = shift;
my $self = $pkg->SUPER::new(@_);
if (!defined $self->{fh} || $self->{fh} eq 'stderr') {
# Create a reference to STDERR.
$self->{fh} = \*STDERR;
} elsif ($self->{fh} eq 'stdout') {
# Create a reference to STDOUT.
$self->{fh} = \*STDOUT;
} elsif (!ref $self->{fh}) {
# Assume a reference to a filehandle or else it's invalid.
Carp::croak("Invalid argument to new(): '$self->{fh}'");
}
# We're done!
return $self;
}
##############################################################################
=head3 handler
This method is called by App::Info to print out the message from events.
=cut
sub handler {
my ($self, $req) = @_;
print {$self->{fh}} $req->message, "\n";
# Return true to indicate that we've handled the request.
return 1;
}
1;
__END__
=head1 SUPPORT
This module is stored in an open L<GitHub
repository|http://github.com/theory/app-info/>. Feel free to fork and
contribute!
Please file bug reports via L<GitHub
Issues|http://github.com/theory/app-info/issues/> or by sending mail to
L<bug-App-Info@rt.cpan.org|mailto:bug-App-Info@rt.cpan.org>.
=head1 AUTHOR
David E. Wheeler <david@justatheory.com>
=head1 SEE ALSO
L<App::Info|App::Info> documents the event handling interface.
L<App::Info::Handler::Carp|App::Info::Handler::Carp> handles events by
passing their messages Carp module functions.
L<App::Info::Handler::Prompt|App::Info::Handler::Prompt> offers event handling
more appropriate for unknown and confirm events.
L<App::Info::Handler|App::Info::Handler> describes how to implement custom
App::Info event handlers.
=head1 COPYRIGHT AND LICENSE
( run in 1.332 second using v1.01-cache-2.11-cpan-98e64b0badf )