package KM::POE::JabberClient; use Filter::Template; const XNode POE::Filter::XML::Node use strict; [...] sub send_message { my ($kernel, $heap, %attrs) = @_[KERNEL, HEAP, ARG0..$#_]; my $node = XNode->new('message'); my @types = qw(chat error groupchat headline normal); $attrs{'type'} = $types[0] if exists $attrs{'type'} and !grep { $attrs{'type'} eq $_ } @types; for my $i (qw(subject body thread)) { my $k = delete $attrs{$i}; $node->insert_tag($i)->data($k) if $k; } $node->insert_attrs([%attrs]) if %attrs; $kernel->post($heap->{'session'}, 'output_handler', $node); }