On Tue, 22 Jan 2002 10:03:08 -0800 (PST), Larry Wall wrote: > At the moment, I see this: > > -2. PRE in order, inherited, no side effects > -1. FIRST in order > 0. inline code normal flow > 1. CATCH, CONTROL singular > 2. NEXT, LAST, KEEP, UNDO in reverse order > 3. POST in reverse order, inherited, no side effects
This is all very sensible, and I completely agree with it. However, don't we need some restrictions on what can go in PRE and POST blocks to ensure that they are still valid in inherited methods? class A; sub foo($bar,$baz){ PRE{ $bar<10 } my $qux=$baz; POST{ $qux==$baz } } class B is base(A); # I forget the syntax for inheritance sub foo($x,$y){ # Insert any old random code here } Presumably, PRE/POST blocks will only be able to access their sub's arguments, since the derived class' sub may not declare the same variables as the base class (see $qux above). Or, maybe you just can't inherit from methods with such conditions, but I think that's putting the restriction in the wrong place. Or, you only inherit conditions which are inheritable, but that defeats the whole scheme. Also, these references have to be compiled into accesses to the argument list, rather than to the lexicals, otherwise they won't be any use at all to the derived class. Of course, this might be how references to sub arguments are compiled anyway, in which case there's no problem. -- Peter Haworth [EMAIL PROTECTED] "Master, does Emacs have the Buddha nature?" the novice asked. The Chief Priest had been in the temple for many years and could be relied upon to know these things. He thought for several minutes before replying, "I don't see why not. It's got bloody well everything else."