in reply to When I use "can"

The obvious usage: feature testing. For example, if a Tk component uses an Entry widget and optionally (if installed) a HistEntry widget, then adding to the entry's history would be done with:
if ($entry->can("historyAdd")) { $entry->historyAdd(...); }
Similar if a module adds a feature (speak: method) in a later version, but you don't know when exactly and won't hardcode the module's version in your code.