I'm brand new to Mojolicious and working on a lite script that goes to 75 urls and retrieves text in an h3 tag. I've worked up a working test script that outputs to console and now I'm working on adjusting it to be a web app but I can't seem to get the correct syntax to store/retrieve the data. What am I doing wrong?
#!/usr/bin/perl use Mojolicious::Lite; my @urls = ( 'https://mojolicious.org', 'https://metacpan.org', 'https://perlmonks.org', 'http://www.google.com', ); get '/titles' => sub { my $ua = Mojo::UserAgent->new; my $async = Mojo::IOLoop::Delay->new; $async->steps( sub { my $self = shift; $ua->get($_, $self->begin) for @urls; }, sub { my ($self, @tx) = @_; my $titles = []; foreach (@tx) { my $title = ''; my $status = $_->res->is_success ? 'Connected' : $_->error ->{message}; if ( $_->res->is_success ) { $title = $_->res->dom->at('title')->text; $title =~ s/^\s+|\s+$//g; # couldn't get Mojo::Util trim function to work } push @$titles, {host => $_->req->url->host, status => $status, title => $title}; } $self->stash(titles => $titles); } ); } => 'titles'; app->start; __DATA__ @@ titles.html.ep % layout 'titles'; %= dumper stash('titles') <table border=1> <tr> <th>Host</th> <th>Status</th> <th>Title</th> </tr> <!-- % for my $server ( @{ stash('titles') } ) { --> % for my $server ( stash('titles') ) { <tr> <td><%= $server->{host} %></td> <td><%= $server->{status} %></td> <td><%= $server->{title} =%></td> </tr> % } </table> @@ layouts/titles.html.ep <!doctype html> <html> <head> <title>Titles</title> </head> <body> <h1>Titles</h1> <%= content =%> </body> </html> Here's the output: > $ ./titles_web.pl get /titles > [Thu Feb 7 09:45:54 2019] [debug] GET "/titles" (fcf21ce8) > [Thu Feb 7 09:45:54 2019] [debug] Routing to a callback > [Thu Feb 7 09:45:54 2019] [debug] Rendering template "titles.html.ep" > from DATA section > [Thu Feb 7 09:45:54 2019] [debug] Rendering template > "layouts/titles.html.ep" from DATA section > [Thu Feb 7 09:45:54 2019] [debug] 200 OK (0.00267s, 374.532/s) > <!doctype html> > > <html> > > <head> > <title>Titles</title> > </head> > > <body> > <h1>Titles</h1> > > undef > > > <table border=1> > <tr> > <th>Host</th> > <th>Status</th> > <th>Title</th> > </tr> > > <!-- % for my $server ( @{ stash('titles') } ) { --> > <tr> > <td></td> > <td></td> > <td></td> > </tr> > </table> > </body> > > </html> > -- You received this message because you are subscribed to the Google Groups "Mojolicious" group. To unsubscribe from this group and stop receiving emails from it, send an email to mojolicious+unsubscr...@googlegroups.com. To post to this group, send email to mojolicious@googlegroups.com. Visit this group at https://groups.google.com/group/mojolicious. For more options, visit https://groups.google.com/d/optout.