sub foldertree($$) { my ($imap,$fname) = @_; my $count=0; my $new=0; my $unread=0; my @folders=(); set_callback( list => sub { my @tmp = split ('}',$_[2]); push (@folders, $tmp[1]); }, status => sub { $count = $_[3]; $new = $_[5]; $unread = $_[7]; } ); $imap->list("{hostname:143/imap}$fname",'%'); my @topfolders = @folders; my @folderlist; foreach my $f (sort @topfolders) { $imap->status("{hostname:143/imap}$f", "messages","recent","unseen"); my %foldhash= ( 'name' => $f, 'count' => $count, 'new' => $new, 'unread' => $unread ); my @subfolders=&foldertree($imap,$f); my $fc=@subfolders; $foldhash{'fc'} = $fc; $foldhash{'subfolders'} = @subfolders; @folderlist = (@folderlist, \%foldhash); } return @folderlist; } #### foreach my $f (sort @topfolders) { $imap->status("{hostname:143/imap}$f", "messages","recent","unseen"); my $new_count=$count; my $new_new=$new; my $new_unread=$unread; my %foldhash= ( 'name' => $f, 'count' => $new_count, 'new' => $new_new, 'unread' => $new_unread ); my @subfolders=&foldertree($imap,$f); my $fc=@subfolders; $foldhash{'fc'} = $fc; $foldhash{'subfolders'} = @subfolders;