[dancer-users] How tod displaye aMulti Dimesional Hash in Template Toolkit

Richard Reina gatorreina at gmail.com
Mon Aug 24 11:26:15 EDT 2020


I am going out of my mind. I have no idea what could be wrong.

Below is my route (with the hash defined in it), my html and the results I
get in the browser.

get '/results' => sub {

    # Test the hash
    my %season= (
'TylerMontgomery(2022)' => {
   'so' => 1,
   'bb' => 1,
   'rbis' => 0,
   'atbats' => 117,
   'runs' => 2,
   'hits' => 2
},
'ChaseLangan(2022)' => {
   'runs' => 4,
   'hits' => 24,
   'atbats' => 5,
   'bb' => 0,
   'rbis' => 2,
   'so' => 1
},
'BryceJones(2021)' => {
   'hits' => 2,
   'runs' => 2,
   'atbats' => 4,
   'bb' => 2,
   'rbis' => 4,
   'so' => 1
},
);


    template 'results.tt' => {

'title' => 'Get Softball Season Stats',
'payload' => \%season,

    }, {};

};

################################################
HTML
################################################
<!DOCTYPE html>
<html lang="en">
  <head>
    <!-- head definitions go here -->
    <meta charset="utf-8">
  </head>
  <body>

    <% IF payload.size %> <!-- season data
-------------------------------------->
    <% payload.size %>
    <% USE Dumper; Dumper.dump(payload) %>

     <div class="container" style="margin-top:20px;">
      <h3>Trying with Gabor's solution</h3>
      <% FOR name IN payload.keys.sort %>
      <% name %>
      -------------
      <%- FOR field IN payload.$name.keys.sort %>
      <p>Field: </p><% field %> : <% payload.$name.$field -%>
      <p>Field: </p><% field %> : <% payload.$name.atbats -%>
      <% END %>
      <% END %>
    </div>

    <div class="container" style="margin-top:20px;">
      <h3>Trying with Ikegami's solution</h3>
      <% FOREACH id IN payload.keys %>
      <% season = payload.$id %>
      <p><% season.runs %></p>
      <p><% season.atbats %></p>
      <% END %>
    </div>

    <br> <br>
    <div class="container" style="margin-top:20px;">
      <% USE String %>

      Name                    atbats so   bb  rbis hits runs
      <% FOR name IN payload.keys.sort %>
      <% fname  = String.new(name) -%>
      <% atbats = String.new(payload.$name.atbats) -%>
      <% so     = String.new(payload.$name.so) -%>
      <% bb     = String.new(payload.$name.bb ) -%>
      <% rbis   = String.new(payload.$name.rbis) -%>
      <% hits   = String.new(payload.$name.hits) -%>
      <% runs   = String.new(payload.$name.runs) -%>
      <% fname.left(22)  %> <% atbats.right(3) -%>    <% so.right(3) -%> <%
bb.right(3) -%>  <% rbis.right(3) -%>   <% hits.right(3) -%>  <%
runs.right(3) -%>
      <% END  %>
      <% END  %>
    </div>

    <div class="container" style="margin-top:20px;">
      <h3>Trying with Perlmonks solution</h3>
      <% FOREACH brevet = payload  %>
      brevet.key <% brevet.key %>
      brevet.val <% brevet.value %>
      brevet.$val.hits <% brevet.$value.atbats %>
      brevet.val.atbats <% brevet.value.runs %>
      brevet.val.dist <% brevet.value.hits %>
      <% END %>
    </div>
  </body>
</html>

#######################################################
The results that appear in the browser
#######################################################
Trying with Gabor's solution-------------

Field:
:

Field:
:
Trying with Ikegami's solution



Name atbats so bb rbis hits runs
Trying with Perlmonks solutionHASH(0x17982b0) brevet.key brevet.val
brevet.$val.hits brevet.val.atbats brevet.val.dist
Powered by Dancer2 <http://perldancer.org/> 0.300004
##############################################################################################
*If I replace 'payload' => \%season, with 'payload' => %season and restart
my app with  plackup bin/app.psgi then the results in the browser are:*
TylerMontgomery(2022) TylerMontgomery(2022)
Trying with Gabor's solutionTylerMontgomery(2022) -------------
TylerMontgomery(2022)

Field:
: TylerMontgomery(2022)

Field:
: TylerMontgomery(2022)
Trying with Ikegami's solutionTylerMontgomery(2022) TylerMontgomery(2022)



Name atbats so bb rbis hits runs TylerMontgomery(2022)
Trying with Perlmonks solutionTylerMontgomery(2022) brevet.key brevet.val
brevet.$val.hits brevet.val.atbats brevet.val.dist
Powered by Dancer2 <http://perldancer.org/> 0.300004




El dom., 23 ago. 2020 a las 23:11, Gabor Szabo (<gabor at szabgab.com>)
escribió:

> Try putting that backslash back so it will be
>
>    template 'results.tt' => {
>
>         'title' => 'Get Softball Season Stats',
>         'payload' => \%season,
>
>     }, {};
> Gabor
>
> On Sun, Aug 23, 2020 at 10:44 PM Richard Reina <gatorreina at gmail.com>
> wrote:
>
>> I was merely passing it as with different var name to distinguish from
>> different attempts in my html. Taking out the other case, as I have
>> done, has no effect on the results.
>>
>> This is what is being passed the html in the paste above:
>>
>>    template 'results.tt' => {
>>
>>         'title' => 'Get Softball Season Stats',
>>         'payload' => %season,
>>
>>     }, {};
>>
>> And this is the result:
>>
>>
>> Trying with payload
>> TylerMontgomery(2022) ------------- TylerMontgomery(2022) :
>> TylerMontgomery(2022)
>>
>> Name atbats so bb rbis hits runs TylerMontgomery(2022)
>>
>>
>> 2020-08-23 14:22 GMT-05:00, Gabor Szabo <gabor at szabgab.com>:
>> > OK, so I don't understand why do you pass the same %payload 3 times, but
>> > you need to pass references in all 3 cases.
>> >
>> > template 'results.tt' => {
>> > 'title' => 'Get Softball Season Stats',
>> > 'games' => \%season,
>> > 'season' => \%season,
>> > 'payload' => \%season,
>> > 'F_NAME' => 'Geraldo',
>> >
>> >
>> >     }, {};
>> >
>> > On Sun, Aug 23, 2020 at 9:38 PM Richard Reina <gatorreina at gmail.com>
>> wrote:
>> >
>> >>  template 'results.tt' => {
>> >>
>> >>         'title' => 'Get Softball Season Stats',
>> >>         'payload' => \%season,
>> >>
>> >>     }, {};
>> >>
>> >> Results in this:
>> >>
>> >> Trying with payload
>> >> ------------- :
>> >>
>> >> Name atbats so bb rbis hits runs
>> >>
>> >>
>> >>
>> >> 2020-08-23 12:53 GMT-05:00, Gabor Szabo <gabor at szabgab.com>:
>> >> > I think you should be passing references:
>> >> >
>> >> > 'payload' => \%season,
>> >> >
>> >> > See the backslash.
>> >> >
>> >> > Gabor
>> >> >
>> >> >
>> >> >
>> >> > On Sun, Aug 23, 2020 at 8:45 PM Richard Reina <gatorreina at gmail.com>
>> >> wrote:
>> >> >
>> >> >> Ok, maybe I've overlooked something but here is what I get with very
>> >> >> simple call to a route and using very simple html.
>> >> >>
>> >> >> http://paste.scsys.co.uk/592477
>> >> >>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.preshweb.co.uk/pipermail/dancer-users/attachments/20200824/d090ea75/attachment-0003.htm>


More information about the dancer-users mailing list