This sounds like the observer/observable pattern. There are two implementations that I know of on cpan: Class::Observable which I don't recommend since it has a pretty serious bug, and Class::Publisher which can be used just like Class::Observable but also gives you more options selecting notifications.