Plugin-based architectures can be a bad idea.
Not always. In user-facing applications, where the list of installed and enabled plugins is clear, then plugins are often a good thing. This article is concerned not with end-user facing applications, but with libraries. Libraries that allow their functionality to be extended through plugins. In particular, libraries that automatically detect and load all installed plugins.
Plugins aren't always obviously plugins. In this article, I'm defining a plugin as a software module that adds additional functionality or modifies the external…
Did you know that 22/7 is actually a better approximation of pi than 3.14 is?
use Math::Trig qw(pi);
use Test::More tests => 1;
my $today = DateTime::->now;
my $dm = sprintf '%d/%d' => ($today->day, $today->month);
abs( eval($dm) - pi ),
or diag("this test only passes on 22/7")
How to File a Perfect Bug Report
My criteria for a perfect bug report...
- The report is filed correctly.
- The issue identified affects the latest version of the software.
- The report includes a test script illustrating the problem
- ... which is self-contained
- ... and is minimal
- ... and conforms to the Test Anything Protocol.
- The report includes an explanation.
- The report includes patch
- ... which is well-written
- ... and obeys coding conventions.
Obviously all reports of genuin…