X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FBit-MorseSignals.git;a=blobdiff_plain;f=lib%2FBit%2FMorseSignals%2FReceiver.pm;h=87c0a5b3ad450980dc5087272aead1f40a937545;hp=6c130045402f3afc26b82b55bff192f6f6f1604b;hb=0288f57c6aaf2cb133df80f13d78af66ea094902;hpb=9a209b336e8b6850c08050f7ca84f86f0546bf57 diff --git a/lib/Bit/MorseSignals/Receiver.pm b/lib/Bit/MorseSignals/Receiver.pm index 6c13004..87c0a5b 100644 --- a/lib/Bit/MorseSignals/Receiver.pm +++ b/lib/Bit/MorseSignals/Receiver.pm @@ -15,11 +15,11 @@ Bit::MorseSignals::Receiver - Base class for Bit::MorseSignals receivers. =head1 VERSION -Version 0.03 +Version 0.04 =cut -our $VERSION = '0.03'; +our $VERSION = '0.04'; =head1 SYNOPSIS @@ -46,7 +46,7 @@ sub _check_self { =head1 METHODS -=head2 C<< new [ done => $cb ] >> +=head2 C<< new < done => $cb > >> L object constructor. With the C<'done'> option, you can specify a callback that will be triggered every time a message is completed, and in which C<$_[0]> will be the receiver object and C<$_[1]> the message received. @@ -99,7 +99,12 @@ sub push { my @demanglers = (sub { $_[0] }, \&decode_utf8, \&thaw ); # BM_DATA_{PLAIN, UTF8, STORABLE} $self->{msg} = defined $demanglers[$self->{type}] - ? $demanglers[$self->{type}]->($self->{buf}) + ? do { + my $msg = eval { + $demanglers[$self->{type}]->($self->{buf}) + }; + $@ ? undef : $msg; + } : $self->{buf}; $self->reset; $self->{done}->($self, $self->{msg}) if $self->{done};