in reply to What is this can() and why is breaking it (un)acceptable?
in thread Why breaking can() is acceptable
Now, let's say that there is some other server base module, called Net2::Server. It provides a very similar (but not identical) interface, but radically different innards. It's useful for different types of servers.
Now, let's say that I am using five servers, each an object of a class that either inherits from Net::Server or Net2::Server. I don't know which inherits from which. But, I do know that there is one interface difference I need to be aware of - foo() vs. bar(). So, I can do the following:
my $method = $server->can('foo') || $server->can('bar'); $server->$method( @args );
And I guarantee that my code will work, regardless of which baseclass the server inherits from.
------
We are the carpenters and bricklayers of the Information Age.
Then there are Damian modules.... *sigh* ... that's not about being less-lazy -- that's about being on some really good drugs -- you know, there is no spoon. - flyingmoose