<div dir="ltr">Strange. Why do you have the ($message) in the prototype of the function?<div><br></div><div><span style="font-size:12.8000001907349px">sub set_flash($message) {</span><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">If I have that I get a warning:</div><div class="gmail_extra"><br></div><div class="gmail_extra">







<p class=""><span class="">Illegal character in prototype for set_flash : $message at </span></p></div><div class="gmail_extra"><br></div><div class="gmail_extra">Anyway you can put   debug("set_flash: $message") in the set_flash functions to see on the console if it is really executed.</div><div class="gmail_extra"><br></div><div class="gmail_extra">If that does not solve the problem, could you share a small but full example that does work? (At least the full .pm file)</div><div class="gmail_extra"><br></div><div class="gmail_extra">Gabor</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, May 31, 2015 at 6:47 AM, Prairie Nyx <span dir="ltr"><<a href="mailto:prairienyx@gmail.com" target="_blank">prairienyx@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div>Perl Dancer Community:<br><br>I am converting from Dancer to Dancer2 (better late than never) and also developing some preliminary curriculum materials for CoderDojo using Perl Dancer2 as a framework for web development.<br><br></div><div>I started with SawyerX's tutorial page:<br><br>   <a href="http://search.cpan.org/~xsawyerx/Dancer2/lib/Dancer2/Tutorial.pod" target="_blank">http://search.cpan.org/~xsawyerx/Dancer2/lib/Dancer2/Tutorial.pod</a><br><br>The "<a href="http://dancr.pl" target="_blank">dancr.pl</a>" tutorial program ran just fine under the port 3000 server and the tutorial was useful and instructive:<br></div><br></div>C:\Users\CoderDojo\Perl\Dancer\dancr>perl <a href="http://dancr.pl" target="_blank">dancr.pl</a><br>>> Dancer2 v0.160001 server 2496 listening on <a href="http://0.0.0.0:3000" target="_blank">http://0.0.0.0:3000</a><br><br></div>I ran into an issue when I tried to convert this demo into an app that would run under Apache in a Windows environment, however.<br><br></div>The *crux* of the issue is that the "$flash message" does not work in the app (I suspect because the global variable $flash and the two subroutines are not part of a route, but I could *really* use an explanation, if this issue is obvious to someone:<br><br></div>I created the app as normal:<br><br><span style="font-family:monospace,monospace">C:\Apache24\htdocs><b>dancer2 -a dancr</b><br>+ dancr<br>+ dancr\config.yml<br>+ dancr\cpanfile<br>+ dancr\Makefile.PL<br>+ dancr\MANIFEST.SKIP<br>+ dancr\bin<br>+ dancr\bin\app.psgi<br>+ dancr\environments<br>+ dancr\environments\development.yml<br>+ dancr\environments\production.yml<br>+ dancr\lib<br>+ dancr\lib\<a href="http://dancr.pm" target="_blank">dancr.pm</a><br>+ dancr\public<br>+ dancr\public\dispatch.cgi<br>+ dancr\public\dispatch.fcgi<br>+ dancr\public\404.html<br>+ dancr\public\500.html<br>+ dancr\public\favicon.ico<br>+ dancr\public\css<br>+ dancr\public\css\error.css<br>+ dancr\public\css\style.css<br>+ dancr\public\images<br>+ dancr\public\images\perldancer-bg.jpg<br>+ dancr\public\images\perldancer.jpg<br>+ dancr\public\javascripts<br>+ dancr\public\javascripts\jquery.js<br>+ dancr\t<br>+ dancr\t\001_base.t<br>+ dancr\t\002_index_route.t<br>+ dancr\views<br>+ dancr\views\<a href="http://index.tt" target="_blank">index.tt</a><br>+ dancr\views\layouts<br>+ dancr\views\layouts\<a href="http://main.tt" target="_blank">main.tt</a><br><br></span></div>With the resulting app files, I added the code from the original "<a href="http://dancr.pl" target="_blank">dancr.pl</a>" demo to the applications "<a href="http://dancr.pm" target="_blank">dancr.pm</a>" module:<br><br><span style="font-family:monospace,monospace">package dancr;<br>use Dancer2;<br><br>our $VERSION = '0.1';<br><br>get '/' => sub {<br>    template 'index';<br>};<br><br>true;</span><br><div><div><div><div><div><div><div><div><div><div><br></div><div>I had to make the following adjustments to the code for Windows/Apache:<br><br></div><div>(1) Change the session to YAML<br><br><span style="font-family:monospace,monospace">#set 'session'      => 'Simple';<br>set 'session'      => 'YAML';</span><br><br></div><div>(2) Adjust the path for request->base:<br><span style="font-family:monospace,monospace"><br>#   $tokens->{'css_url'} = request->base . 'css/dancr.css';<br>    $tokens->{'css_url'} = request->base . '<span style="background-color:rgb(255,255,0)">/</span>css/dancr.css';<br></span><br></div><div>Everything with the app works as expected *except* for the "$flash message" code:<br><br>my $flash;<br><br>sub set_flash($message) {<br>    my $message = shift;<br><br>    $flash = $message;<br>}<br><br>sub get_flash {<br>    my $message = $flash;<br>    $flash = '';<br>    <br>    return $message;<br>}<br><br></div><div>I suspect that since these subs are outside a route, perhaps I'm getting an effect about the scope of the variables... but calls to these subroutines do *not* set $flash or $message as expected:<br><br>   template '<a href="http://show_entries.tt" target="_blank">show_entries.tt</a>', {<br>   'msg' => get_flash,<br><br>   set_flash('New entry posted!');<br><br>   set_flash('You are logged in.');<br><br>   set_flash('You are logged out.');<br></div><div><br></div><div>For each of these, the $flash variable (which is a free-standing global in the module) is never set... and so the get_flash sub never returns a value.<span class=""><font color="#888888"><br><br></font></span></div><span class=""><font color="#888888"><div>-- <br><div>Prairie Nyx<br><a href="mailto:prairienyx@gmail.com" target="_blank">prairienyx@gmail.com</a></div>
</div></font></span></div></div></div></div></div></div></div></div></div></div>
<br>_______________________________________________<br>
dancer-users mailing list<br>
<a href="mailto:dancer-users@dancer.pm">dancer-users@dancer.pm</a><br>
<a href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users" target="_blank">http://lists.preshweb.co.uk/mailman/listinfo/dancer-users</a><br>
<br></blockquote></div><br><br>
</div></div>