
One recurring problem in modules that use scalar::util's weaken function is that it is not present in the pure-perl variant.
while this isn't necesarily always a problem in a straight cpan-based perl environment, some operating system distributions only include the pure-perl versions, don't include the xs version, and so weaken is then "missing" from the platform, despite passing a dependency on scalar::util successfully.
the normal solution is to manually write tests in each distribution to ensure that weaken is available.
task::weaken restores the functionality testing to a dependency you do once in your makefile.pl, rather than something you have to write extra tests for each time you write a module.