Hi, DateTime::Set 0.21 dies when as_list is asked to produce a list from outside the range of the set. It shows up in the tests included with DateTime::Event::ICal.
Can't call method "is_infinite" on an undefined value at /usr/lib/perl5/site_perl/5.8.3/DateTime/Set.pm line 508. I've attached a patch for DateTime::Set. Hope you find it useful. sbg
diff -ruN DateTime-Set-0.21/lib/DateTime/Set.pm DateTime-Set-0.21-sbg/lib/DateTime/Set.pm --- DateTime-Set-0.21/lib/DateTime/Set.pm 2005-04-08 00:40:53.000000000 +1000 +++ DateTime-Set-0.21-sbg/lib/DateTime/Set.pm 2005-05-06 15:16:52.299754149 +1000 @@ -505,8 +505,8 @@ ## return undef if $set->{set}->is_too_complex; # undef = no begin/end return undef - if $set->max->is_infinite || - $set->min->is_infinite; + if ( $set->max && $set->max->is_infinite ) || + ( $set->min && $set->min->is_infinite ); # return if $set->{set}->is_null; # nothing = empty my @result; diff -ruN DateTime-Set-0.21/t/as_list_empty.t DateTime-Set-0.21-sbg/t/as_list_empty.t --- DateTime-Set-0.21/t/as_list_empty.t 1970-01-01 10:00:00.000000000 +1000 +++ DateTime-Set-0.21-sbg/t/as_list_empty.t 2005-05-06 15:19:07.307484035 +1000 @@ -0,0 +1,24 @@ +#!/usr/bin/perl + +use strict; + +use Test::More tests => 2; + +use DateTime; +use DateTime::Set; + +my $d1 = DateTime->new( year => 2002, month => 3, day => 11 ); +my $d2 = DateTime->new( year => 2002, month => 4, day => 11 ); +my $d3 = DateTime->new( year => 2002, month => 5, day => 11 ); +my( $set, $r, @dt ); + +$set = DateTime::Set->from_datetimes( dates => [ $d1 ] ); [EMAIL PROTECTED] = $set->as_list; +$r = join(' ', @dt); + +is($r, '2002-03-11T00:00:00', 'Single date set'); + [EMAIL PROTECTED] = $set->as_list( start => $d2, end => $d3 ); +$r = join(' ', @dt); + +is($r, '', 'Out of range');