Skip to end of metadata
Go to start of metadata


Collection of CPAN distributions often used by jonasbn

Bundle::JONASBN is deprecated

Please use Task::BeLike::JONASBN instead. This space will be used for Task::BeLike::JONASBN in the future, which has been implemented based on a refactoring of Bundle::JONASBN



Bundles have been around for some time on the CPAN. The idea behind bundles are that you can create a meta-distribution containing references to other modules. The reasons for making a meta-distribution are many, but here are some common motivations:

  • Easy installation of all the distributions you normally install and use
  • A bundle representing the distributions you need in your stack
  • A bundle with all of your own modules for easy handling

Bundles are easy to make. You create a standard Perl package

package Bundle::MyBundle;

In that package you create a POD section with the heading 'CONTENTS'


Under this heading you simply list your requested bundle contents.




Bundles require some special magic on the client side to parse the CONTENTS section, in this case primarily the CPAN client and the requirements for developing a bundle are quite special and IMHO error prone. Well it took me 4 releases to get it right, I was simply not grasping the magic part.

Adam Kennedy at some point recognized this weakness in the tool chain and introduced Task, a new much simpler approach. Task is based simply on writing up the requirements in the build file, whether you use Module::Build, ExtUtils::MakeMaker or Module::Install.

Tasks are easier to maintain and validate.

I was in that lucky position that I had put all my requirements in my Build.PL from day release 0.01. So when I choose to migrate to a Task based approach it was just a matter of renaming packages etc.

Much of all my trouble was due to the fact that I had thought that the approach would be the approach used in Task. But AFAIK it is a combination of package name: Bundle:: and the CONTENTS section.

My original idea was to have the list in Build.PL and the let the CONTENTS section, be auto-generated. So Bundle::JONASBN and Task::BeLike::JONASBN contain it's own custom build system, based on a sub class of Module::Build. The build system (Module::Build::Bundle) read the requirements from Build.PL and inserts this in the CONTENTS section, alphabetized.

I attempted to let the build system create beautiful POD, instead of the standardized used in bundles. It took me several attempts to figure out that it was the reason my particular bundle was not working as expected.

I have now migrated to the Task approach and reinstated the beautification of the POD and everything works well and looks nice.


These are the distributions I use, which are also mentioned in this Wiki and have the proper label.

There is no content with the specified labels



Recently Updated

Navigate space
  • No labels


  1. Installed Task::BeLike::JONASBN on new workstation, only experienced two minor things. One was Perl::Critic having issues with default system Perl (5.10.0) on OSX (10.6) this seem to be fixed in an upcoming release:

    The other was WWW::Mechanize::Cached, I do not really now what this issue was, will investigate if I get the time.

    1. WWW::Mechanize::Cached's issue might have related to a requirement for: Test::Perl::Critic. Since my Perl::Critic installation failed due to the issue described above, requiring a manual update of version, Test::Perl::Critic could be installed afterwards and same goes for WWW::Mechanize::Cached.