How can I handle hash keys containing illegal iden

2019-02-21 13:02发布

问题:

In Template Toolkit, if I have the following variable containing a hashref:

[% 
   artist = {
     'life-span' => '1975 to 1987',
   }
%]

What is the best way to output the data in 'life-span'?

I have tried...

[% artist.life-span %]

^This fails because of the hyphen.

[% artist.'life-span' %]

^This fails because the syntax is incorrect.

[% lifespan = 'life-span' %]
[% artist.$lifespan %]

^This works, but is impractical in a large app with lots of data.

Is there a better way?

The project I'm working on is a Catalyst based web app and the data comes from a number of different external web services, so I do not control the name of the hash keys. I guess I could pre-process the data in Perl, renaming the problem hash keys before giving it to TT, but that seems like a pretty crappy work-around.

回答1:

You can use the item vmethod: [% artist.item('life-span') %].