in reply to Proper way to create 'globals'
A few possibilities. Simplest is just to make $ts a global, even if that becomes $TestSuite::ts. The painful part here is just to keep ts pointing to the right object at all times if there can be more than one TestSuite object active in the process at a time. Not hard, just tedious.
Next is to pass in $ts, not $ts->{info}. Because although print_stuff needs access to $ts->{info}, frobnicator may need access to $ts->{frobs}. A consistent framework where the $ts is always passed in may suffice.
Finally, your factory method (where you create the objects) could just take the test suite object as a parameter, and put it into the object being created such that $ts->{blob}->{testsuite} == $ts. Then in print_stuff, you'd be able to use $self->{testsuite}->{info}.
That said, I wouldn't actually suggest accessing other objects' internals directly like that. Make accessor methods to do it. Just nicer that way.
|
|---|