[Zope-Perl] Script (Perl) question

Gisle Aas gisle@ActiveState.com
25 Jan 2001 11:24:34 -0800


"Chris McDonough" <chrism@digicool.com> writes:

> I think you need to reference self.Control_Panel.objectIds in perl through
> the following:
> 
> foreach $name ($self->{Control_Panel}->objectIds()) {
> ...
> }

Assuming $o is some python object:

Perl       |                        Python
-----------+------------------------------------
$o->{Foo}  | should be the same as  o["Foo"]
$o->Foo    | should be the same as  o.Foo
           |                    or  o.Foo()  (if o.Foo happens to be callable)

If you want to avoid the auto-call feature of $o->Foo you need to
write it as Python::getattr($o, "Foo").

--Gisle


> Gad, I found that I've forgotten everything I ever knew about Perl, which
> wasn't much to start with.  :-)
> 
> ----- Original Message -----
> From: "Chris McDonough" <chrism@digicool.com>
> To: "Andy McKay" <andym@activestate.com>; <zope-perl@zope.org>
> Sent: Wednesday, January 24, 2001 7:12 PM
> Subject: Re: [Zope-Perl] Script (Perl) question
> 
> 
> > Are you passing in "self" as an argument on the PerlM arguments line?
> >
> > ----- Original Message -----
> > From: "Andy McKay" <andym@activestate.com>
> > To: <zope-perl@zope.org>
> > Sent: Wednesday, January 24, 2001 6:48 PM
> > Subject: [Zope-Perl] Script (Perl) question
> >
> >
> > > Whats $self in Zope Perl, AFAIK it is a binding to the scripts
> container,
> > > similar to context to Script (Python). Anyway the following works fine
> in
> > > python:
> > >
> > > return context.Control_Panel.objectIds()
> > >
> > > The same in Perl would be:
> > >
> > > return $self->Control_Panel->objectIds();
> > >
> > > but I get a __call__ error. The Zope Book suggests that I have the right
> > > syntax. The problem seems to occur when moving into a sub-object, for
> > > example $self->objectIds(); works just fine. Any ideas anyone?
> > >
> > > Using: Zope 2.3b2, Win2k, Python 1.5.2, Perl 620, pyperl &
> > zoperl-1.0-beta3
> > >
> > > Cheers.
> > >
> > > --
> > >   Andy McKay.