my $OpenTopic = new Win32::API ("pmdbf32", "OpenTopic", [P, P], N); sub open { my $self = shift; my $topic = shift || "-NA-"; # Topic Name provided? my ($lpTopic, $Topic, $return, $handle); # Already Open? return (-1) if $self->opened(@_); # If no topic is passed, but one was defined previously # then assign $topic that value $topic = $self->{TOPIC} if ($topic eq "-NA-") and (defined($self->{TOPIC})); # Return if empty Topic name return (-1) if ($topic eq "-NA-") and (! defined($self->{TOPIC})); # Allocate/Format the data $lpTopic = pack("L", 0); $Topic = pack("a16",$topic); #This is the line that is failing ***** $return = $OpenTopic->Call($Topic, $lpTopic); # Opened Topic OK? if ($return == 0) { ($self->{HANDLE}) = unpack("L", $lpTopic); $self->{TOPIC} = $topic; } else { return (-1); } return $return; }