We have just read-TFM and figured out that we can use \&Sub. This way it
passes "use strict" but produces a warning with "use warnings" (the
warning is "Subroutine package::Sub redefined at ...").
We can "fix" it with "no warnings 'redefine'"
All the banning modules have a problem. They use code like the
following:
*StrangeOldBannedContent = *BannedContent;
*BannedContent = *StrangeNewBannedContent;
The code above changes both the sub and the variable. $BannedContent now
points to $StrangeNewBannedContent (which is undefined) and the name of
the Banned Content page is only accessible via $StrangeOldBannedContent.
If we copy $StrangeOldBannedContent to $BannedContent, everything else
will keep working.
$BannedContent = $StrangeOldBannedContent;
But now use strict will not work. When we tried this:
my $StrangeOldBannedContent; # use strict
Then BannedContent disappeared from the admin page as shown by the tests
in strange-spam.t; the correct solution uses our instead of my.
I'm not sure why.
Added a comment to explain these lines.
my $RegexpOldBannedContent;
*RegexpOldBannedContent = *BannedContent;
*BannedContent = *RegexpNewBannedContent;
$BannedContent = $RegexpOldBannedContent;