server metadata is printed with some strange format. Instead of one section header "Server Wide" multiple section headers are printed: cyradm> info Server Wide: admin: NIL admin: comment: NIL comment: motd: NIL motd: expire: NIL
More correct output would be: cyradm> info Server Wide: admin: NIL comment: NIL motd: NIL expire: NIL Following two lines in Shell.pm $attrib =~ /(\{.*\})/; my $sect = $1; do not work as intented because - server metadata does not contain '{}'. - the regular expression does not match, i. e. perl does not reset capture groups and $1 still references the last successful match form the previous loop ("$attrib =~ /([^\/]*)$/;" at the end of the loop). --- perl/imap/IMAP/Shell.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/perl/imap/IMAP/Shell.pm b/perl/imap/IMAP/Shell.pm index a1448f7..0240d41 100644 --- a/perl/imap/IMAP/Shell.pm +++ b/perl/imap/IMAP/Shell.pm @@ -1387,8 +1387,9 @@ sub _sc_info { # keep track of what mailboxes we've printed a header for already my %section = (); foreach my $attrib (sort keys %info) { - $attrib =~ /(\{.*\})/; - my $sect = $1; + # server metadata does not contain '{}' + my $sect = undef; + $sect = $1 if $attrib =~ /(\{.*\})/; if(!defined($sect)) { $sect = "Server Wide"; } -- 2.1.4