in reply to Dereferencing in blessed object
What is causing the lack of dereferencing or what else could I try to debug this problem?
The issue with my ($self, $disp, %v) = @_; and my ($value, %vars) = @_; is the same as Re^7: Preparing data for Template. Building an SSCCE to understand it better is a great approach, but since the point of it is also to debug, make sure you pull out all the stops: In this case, Use strict and warnings, use useful variable names, and don't repeat variable names. See also the Basic debugging checklist.
Here's another way to think about the issue: @_ contains the subroutine arguments, so the first line of reftest can be thought of as my ($value, %vars) = ('testing', $vars);. Drop the $value and you get my %vars = $vars; - there's no dereferencing happening here. In effect, it's the same as my %vars = ( $vars => undef );, which you can see when you dump \%vars with e.g. Data::Dump: you'll see { "HASH(0x...)" => undef }, the hashref was stringified since hash keys are strings.
Also, variable naming/scoping is biting you as well: $$v{'testpage'} aka $v->{testpage} is accessing a scalar $v, which is not defined in sub process, and so apparently you've got a $v somewhere higher up in the code that is either uninitialized and being autovivified here, or it's already a hashref, or, in the worst case, you're not using strict. And note that if $$v{'testpage'} is giving you undef, "<h1>".$testpage."</h1>\n" would have given you warnings accordingly.
As before, you need to either explicitly dereference the hashref via my %hash = %$hashref;, although that makes a (shallow) copy of the hash, or you can save on memory and just use the hashref as-is, which is what you're trying to do in $$v{'testpage'}, but to do that, you should've written my ($self, $disp, $v) = @_; instead.
Just for completeness:
The only difference is that the subroutine is a method in a blessed object...could this really make a difference?
No, method calls don't affect this.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Dereferencing in blessed object
by Bod (Parson) on Feb 27, 2021 at 22:19 UTC | |
by hippo (Archbishop) on Feb 27, 2021 at 22:44 UTC | |
by choroba (Cardinal) on Feb 28, 2021 at 22:14 UTC | |
by Bod (Parson) on Feb 27, 2021 at 22:51 UTC | |
by hippo (Archbishop) on Feb 28, 2021 at 10:45 UTC | |
by Bod (Parson) on Feb 28, 2021 at 11:46 UTC | |
by haukex (Archbishop) on Feb 28, 2021 at 07:36 UTC |