in reply to Re: Why was it neccessary to pass a DBI handler by reference?
in thread Why was it neccessary to pass a DBI handler by reference?
Don't worry, your moon analogy is fine, but I already know the difference between a reference
and a scalar value. My question has more to do with the
peculiarities of DBI and why it doesn't act like I expect.
See this small example program:
Foo.pm isn't very interesting:use warnings; use strict; use Foo; use Bar; my $foo = new Foo; my $bar = new Bar($foo); $foo->x("from program"); print "(app) Memory: $foo, X: ".$foo->x()."\n"; $bar->show();
And Bar.pm just stores some foo:package Foo; sub new { my $name = shift; bless { x => 'from Foo' }, $name; } sub x { my ($self, $arg) = @_; $$self{x} = $arg if ($arg); return $$self{x}; } 1;
package Bar; sub new { my $name = shift; my $foo = shift; bless { foo => $foo }, $name; } sub show { my $self = shift; my $foo = $$self{foo}; print "(bar) Memory: $foo, X: ".$foo->x()."\n"; } 1;
This example is almost exactly like what I wanted to do, except that I'm using a makeshift module instead of DBI.
The results of the memory test will of course depend upon the execution, but both times the memory location is the same. That wouldn't happen after I 'forced a copy' by changing one of the values in $foo if I didn't have a reference.
I hope this clarifies my question.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: Re: Why was it neccessary to pass a DBI handler by reference?
by neuroball (Pilgrim) on Jan 28, 2004 at 16:47 UTC |
In Section
Seekers of Perl Wisdom