[Catalyst] Warnings on application startup

Marius Kjeldahl mariusauto-catalyst at kjeldahl.net
Mon Oct 29 12:29:55 GMT 2007


I'm developing a catalyst-based application on development machines
running Gentoo linux. They're all pretty much the same machines as I
update them pretty frequently.

When I run the same source on two different development machines, I have
lately started to get some warnings on application startup. It does not
seem to affect the application any way; it runs just fine. But I do not
like that the warnings only appear on the one machine. It looks like this:

Argument "undef" isn't numeric in bitwise and (&) at
/usr/lib/perl5/vendor_perl/5.8.8/i686-linux/Template/Provider.pm line 363.
Argument "undef" isn't numeric in bitwise and (&) at
/usr/lib/perl5/vendor_perl/5.8.8/i686-linux/Template/Plugins.pm line 164.
[debug] Debug messages enabled
[debug] Loaded plugins:
| Catalyst::Plugin::Authentication  0.10002
| Catalyst::Plugin::Authorization::Roles  0.05
| Catalyst::Plugin::ConfigLoader  0.18
| Catalyst::Plugin::Session  0.19
| Catalyst::Plugin::Session::State::Cookie  0.09
| Catalyst::Plugin::Session::Store::DBI  0.12
| Catalyst::Plugin::StackTrace  0.06
| Catalyst::Plugin::Static::Simple  0.20

Those two "undef" warnings does not appear on the other development
machine, so something is definitively different.

I'm suspecting there is a difference in how Catalyst was installed on
the two. I've tried running the "catinstall" script (or whatever it was
called) from catalystframework.org, and it runs just fine. Over time
however, I've probably pulled in more perl modules using CPAN install,
and even attempted a Gentoo-based svn checkout of the same.

Looking more closely into this it seems I have some modules installed in
both site_perl and vendor_perl. However, I've gone through and cleaned
up differences I have found, and as far as I have been able to figure
out the Catalyst and Template modules are pretty much identical on both
machines. But I still get the warnings on the one machine and not the other.

According to the warnings, the offending lines are (Provider.pm):

        $self->{ DEBUG } = $debug & ( Template::Constants::DEBUG_PROVIDER
                                    | Template::Constants::DEBUG_FLAGS );

and (Plugins.pm):

    $self->{ DEBUG       } = ( $params->{ DEBUG } || 0 )
                             & Template::Constants::DEBUG_PLUGINS;

>From this, I would guess that Template::Constants isn't being loaded
properly on the one machine. However, I've also made sure that the same
Constants.pm gets loaded on both machines, effectively removing all
other version on the machine that get the warnings. Still no luck.

Does anybody have any other ideas about what I should be looking for?


Marius K.

More information about the Catalyst mailing list