I had a consultant do some a work a couple of years ago and am now trying to solve a problem and I can't figure what this is doing:
...in program...
$MSG->trace( "my message");
...in module..
sub trace { shift->_message( TRACE, @_ ) }
sub channels_by_fh { map { $_->[0] } @{ shift->{handles} } }
sub channels_by_file { () }
sub channels_by_email { () }
sub channels_by_level { grep { $_[0]->level( $_[1] ) } $_[0]->channels
+ }
sub _message
{
my $self = shift;
my $level = shift;
foreach my $channel ( $self->channels_by_level( $level ) )
{
print $channel $self->tag($level) . "@_" . "\n";
}
}
Right now I am getting an error message of "Can't locate object method "channels" via package..." which is pointed at the line "sub channels_by_level", I am self taught and don't understand what the subroutine is doing, I am not familiar with what grep does or which direction this lines is working. I am hoping someone can explain this for me.