Sign in to PrePAN


User's Modules

File::JSON::Slurper A mashup of File::Slurper and JSON::MaybeXS

On the Nth time of using File::Slurper and JSON::MaybeXS, I decided it would be handy to have a module which just wrapped these two things up.

It would have the reverse operation as well: write_json.

I had a quick skim of CPAN, and couldn't find a clean simple interface like this. There's YANICK's File-Serialize, but it's not quite what I'm after.

I've tried various names for the functions, such as decode_json_from_file, and am still not sure. I picked names that mirror File::Slurper. So suggestions for naming are welcome!

neilbowers@github 4 comments

CalDAV::Simple high-level module for doing a subset of CalDAV things

I'm working on a simple module that will provide access to a subset of CalDAV features with a high-level interface. Initially it will just provide access to todo items.

There is an existing Cal::DAV module, but it doesn't do what I want, has dependencies I don't want, and I'm planning a almost completely different interface.

I'm not sure what namespace to use:

  • it's an application level protocol built on top of HTTP, so I think Net:: and HTTP:: are out.
  • I don't plan to provide full CalDAV, so HTTP::DAV::CalDAV doesn't feel right
  • I plan to use Moo, and return objects, so CalDAV::Tiny is ruled out (I'm not Toby!), though my general approach (simple interface to a subset of functionality) does match the Tiny philosophy to some extent
  • I don't plan (at the moment anyway :-) to do all of CalDAV, so just 'CalDAV' isn't appropriate

So while I don't really like ::Simple module names, I can't think of anything better right now. Any suggestions?

Cheers, Neil

neilbowers@github 2 comments

Plugin::Loader A module for finding and loading plugin modules

Mojo::Loader is my preferred module to use for finding and loading plugins, but if you use it you have to bring along all of Mojolicious, which is not to everyone's taste.

When doing my review of modules that load other modules there was really only one other contender, Module::Find, but you typically end up using that combined with Module::Runtime or similar.

The Mojolicious team don't want to split out Mojo::Loader, so I'm proposing creating a dist that is inspired by Mojo::Loader.

Thoughts for the name:

  • Module::Loader (BRADH has ownership of this name, but isn't using it, so I could ask for it)
  • Plugin::Loader

Better name?

Haven't really flushed out the details of the interface yet, as you can see.

neilbowers@github 3 comments

CPAN::LatestReleases Simple way to get details of latest developer and non-developer releases on CPAN

There currently isn't an easy way to iterate over all releases on CPAN, including developer releases.

This module will run one or two queries against MetaCPAN and aggregate the results, caching them in a local file. You'll be able to specify the expiry time of the local cache, using the notation supported by Time::Duration::Parse.

This module will give you the latest release of each dist currently on CPAN. Where the latest release is a developer release, the generated index will contain the latest developer release and the latest non-developer release.

An initial release would probably have just the release iterator, since that's what I need right now.


  • Most appropriate name for this? CPAN::Latest? CPAN::LatestReleases?
  • Is there another interface you'd like / prefer for accessing this information?
  • What's the best term for "non-developer"? Stable isn't right; Indexed is accurate but not user-friendly.

neilbowers@github 4 comments

Text::Markdown::PodLike Perl-specific extensions to markdown

I've got a subclass of Text::Markdown to which I've so far added just two pod-like extensions, which are CPAN related:

  • M<Foo::Bar> - is essentially a shorthand for hyperlinking a module name to MetaCPAN
  • A<FRED> - a shorthand for hyperlinking an author id to MetaCPAN

I imagine I might add other perl related shorthands, but I wanted these two for blogging.

Thoughts on a name for this?

  • Text::MarkdownX::Perl or ::CPAN
  • Text::Markdown::Pod
  • ?

neilbowers@github 5 comments

Email::Address::Verify Interface to API for to verify an email address

This is a lightweight interface to the API for verifying an email address at Calling it an API is a bit much (see

The main reason for thinking about doing a module for this is so I can get Perl listed on the API page. Yes, I'm aware of the various modules that do various forms of checking whether email addresses are active. I'll list them all in the SEE ALSO.

Possible names:

  • API::VerifyEmail
  • Email::Address::Verify
  • Validate::Email::Address

The Validate:: namespace seems to be more about data / format validation. I like the Email::Address:: prefix — the only thing that slightly concerns me is that this is a commercial API.

neilbowers@github 5 comments

File::CachedURL A Moo role that handles local caching of a remote file (specified by URL)

I've got an existing module on CPAN, PAUSE::Permissions, which grabs 06perms.txt, caches it locally, and gives you an interface to the data in the file.

I've created another module, PAUSE::Packages, which is a similar interface, but to 02packages.details.txt.

So I've switched over to Moo, and done the caching as a role. See also:


None of these changes have been released to CPAN yet.


  • Is there a better name? I thought about URL::LocalCopy, or similar, but none of the names I've come up with so far seem right. Should it be under Role::?
  • Is there an existing module / role that does this? I couldn't find one, but that doesn't mean there isn't one out there.
  • Is there a better way to approach this?

As I write this I see I need to change uri to url :-)

neilbowers@github 7 comments