my $data; #...... accumilate information in $data ...... my $events = ArrayOfEventModel->new($data); my $soap; my $som; eval { $soap = SOAP::Lite -> uri(WS_URI()) -> proxy(WS_PROXY()) -> on_action( sub { sprintf '""', @_ } ) -> on_debug( sub { print @_ } ) -> on_fault( sub { } ) ; $som = $soap->processEvent(SOAP::Data->name('arrayOfEventModel_1')->type(ArrayOfEventModel=>$events)); }; # examines fault and dies if it finds one get_error( $som, $@ );