Matti Maekitalo: Use of uninitialized value in concatenation (.) or string at...

Beitrag lesen

use Mosche;

Eine der von Dir verwendeten Variablen ist bei der Ausgabe leer.

das hat mich jetzt auf die entscheidende Idee gebracht. Es sind 2 Variablen "im Anfangstadium" tatsächlich leer, und zwar :
   my $lastmessby = $1 if $headdata =~ /<lastmessby>(.+?)</lastmessby>/;
   my $lastdate = $1 if $headdata =~ /<lastdate>(.+?)</lastdate>/;

Du solltest bei sowas immer ein if-else machen, das ganze geht ja schön kurz mit dem ?: Operator:
  my $lastdate = ($headdata =~ /<lastdate>(.+?)</lastdate>/)
                 ? $1 : '';

Die Klammer kannst du weglassen, finde ich hier allerdings "schöner".

use Tschoe qw(Matti);