package DCOP::Object; use strict; use vars qw($VERSION $AUTOLOAD); $VERSION = '0.01'; sub AUTOLOAD() { my $funcname; ($funcname = $AUTOLOAD) =~ s/.*:://; return if $funcname eq 'DESTROY'; my $self = shift; foreach my $func (map {DCOP::canonicalizeSignature $_} @{DCOP::remoteFunctions($self->{CLIENT}, $self->{APP}, $self->{OBJ})}) { my $argstr = $func; $argstr =~ s/.*\((.*)\)/$1/; my @args = split /,/, $argstr; next unless $func =~ /^$funcname\(/ && scalar(@args) == scalar(@_); unshift @_, $self->{CLIENT}, $self->{APP}, $self->{OBJ}, "$func"; defined wantarray ? goto &DCOP::call : goto &DCOP::send; } die 'Function "', $self->{APP}, '.', $self->{OBJ}, ".$funcname()\" doesn't exist."; } sub _app() { my $self = shift; $self->{APP}; } sub _object() { my $self = shift; $self->{OBJ}; } 1; __END__