Paul Johnson wrote:
> On Wed, Nov 25, 2009 at 02:16:51PM -0500, Steve Bertrand wrote:
> 
>> Hi all,
>>
>> I just upgraded from perl 5.8 to perl 5.10.1. Everything went well,
>> except for a single module that I need.
>>
>> The offending code is this:
>>
>> ${$self->{__pb_template_list}}[...@{$self->{__PB__TEMPLATE_LIST}}}]->param(
>> $param, $value );
>>
>> As I understand it, $# has been deprecated in 5.10. Can someone please
>> help me understand the above line of code? What does $# represent in
>> this context?
> 
> The variable $# is deprecated, but this isn't the usage of $# here.
> Here it is being used to get the number of elements in an array.
> 
> But the original code is buggy, and whilst 5.8 let that slip, 5.10
> won't.
> 
> The original code the author was trying to write should have been
> 
>   ${$self->{__PB_TEMPLATE_LIST}}[$#{$self->{__PB__TEMPLATE_LIST}}]->param( 
> $param, $value );
> 
> Notice the lack of @{}.
> 
> But this is still far more complicated than it needs to be.  It should
> ideally look something like
> 
>   $self->{__PB_TEMPLATE_LIST}->[-1]->param( $param, $value );

Ok. This worked. I thought I had tried it already, but I obviously had
the syntax wrong.

Thanks everyone! I'll be submitting the patch now.

Steve

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to