"Paul Archer" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > The answer to this is probably out there somewhere, but I haven't run across > it yet, so a pointer to a webpage/tutorial/FAQ/whatever would be fine... > <snip / > > In other words, let's say $main_display is the object that represents what > is (or should be) currently on the display, and $menu_display is an object > that gets updated with new menu items. When I do $menu_display->refresh, the > data in the $menu_display object needs to be transfered to the $main_display > object (and comparisons made, and data written to the LCD). > I suppose I could have a call like: > $main_display->refresh_from_other_object(\$menu_display) > (or something like that...I'm still getting used to the syntax), but that > seems a waste to have to pass data manually, when the $menu_display object > should be able to do it itself. >
My favorite perl OO tutorial is chapters 10-13 of the perl cookbook. Myself, I would use a solution along the lines of what you propose above, rather than have a global object. That way, it makes it easy to say stuff like: foreach my $display ( @displays ) { $menu_display->refresh( $display ); } I know, youre saying, "Theres only ever one main window!!!" But in my experience my singletons always end up multiplying :0) Actually, I probably would have a global object, but it would be a "fall back" or "default" object. And even then I would set it as a property of my other object, instead of having to worry about nasty global misbehaving: sub new { my( $class, %args ) = @_ ... my( $self ) = bless( { }, $class ); $self->{_main} = $args{main}; ... return( $self ); } if ->refresh() dosent get an argument, thats okay, use the default one: sub refresh { my($self) = shift(); my($window_to_refresh) = shift() || $self->{_main}; ... } Todd W. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]