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.
In reply to I don't understand this grep by gwhite
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |