In general, instead of: Carp::croak( "Cannot compare a datetime to a regular scalar" ) unless ( DateTime::Helpers::can( $dt1, 'utc_rd_values' ) && DateTime::Helpers::can( $dt2, 'utc_rd_values' ) );
How about: Carp::croak( "Cannot compare a datetime to a regular scalar [$dt1] [$dt2" ) unless ( DateTime::Helpers::can( $dt1, 'utc_rd_values' ) && DateTime::Helpers::can( $dt2, 'utc_rd_values' ) ); Makes it more fun when I do this in my template: my $vars = { now => DateTime->now }; $t->process( \*DATA, $vars) || die $t->error; __END__ This is the template Formatted mdy = [% now.mdy %] Then when I get this: undef error - Cannot compare a datetime to a regular scalar [2006-08-06T15:09:52] [Template::Stash=HASH(0x860fabc)] at /usr/lib/perl5/DateTime.pm line 1395, <DATA> line 1. I can then wander off in a different direction wondering why _compare is being called in the first place and why the stash is being passed. My guess is because of overloading. -- Bill Moseley [EMAIL PROTECTED]