Dav*_*vid 4 html perl templates
我正在玩子程序.这一切都正常工作,但现在我在调用sub admin_view时在页面底部得到一个随机返回值:1.
Home.pl
#!/usr/bin/env -w perl
no warnings 'experimental::smartmatch';
use Cwd qw(abs_path);
use feature qw(switch);
use CGI::Simple;
use HTML::Template;
my $cgi = CGI::Simple->new;
my $action = $cgi->url_param('cmd') || ''; #Set to: URL/?cmd=
my $mode = $ARGV[0]; #accept entry from terminal
print $cgi->header; #make html appear
if($action eq "") {
#if URL/?cmd=
$mode = "home";
}
if($action eq "admin_view") {
#if URL/?cmd=admin_view
$mode = admin_view;
}
given($mode){
when(admin_view) {
#html: Admin Mode & Display posts
use rawr::template qw(admin_view);
print &admin_view;
}
when(home) {
print "Some home page";
}
##Default message
default { print "mode not implemented" }
}
Run Code Online (Sandbox Code Playgroud)
Template.pm
package rawr::template;
#template stuff
use strict;
use warnings;
use Exporter qw(import);
use HTML::Template;
our @EXPORT_OK = qw(admin_view);
sub admin_view {
# open the html template
##Yuck hardcoded but ok, works for now. some reason ../tmpl/admin_view.tmpl doesn't work
my $template = HTML::Template->new(filename => '/srv/mydomain/www/rawr/tmpl/admin_view.tmpl');
# fill some parameters
$template->param(ALIAS => "Some User");
$template->param(CONTENT => "Hardcoded Content");
$template->param(DATE => "Date - change me");
$template->param(TITLE => "Hardcoded - change me");
# send Content-Type and print the template output
print "Content-Type: text/html\n\n", $template->output;
}
1;
Run Code Online (Sandbox Code Playgroud)
admin_view.tmpl
<table border="1" id="container">
<tr>
<td id="main_content">
<ul>
<li onclick="showmenu(this)">!<b>PROFILE</b>
<ul>
<li><a href="#">Modify</a></li>
<li> Delete</li>
<li> Lock</li>
<br>
</ul>
</li>
<br>
<TMPL_VAR NAME=ALIAS>
<br>
<br>
<TMPL_VAR NAME=DSP>
<br>
</td>
<td id="main_content" class="opacity_box" >
<b><TMPL_VAR NAME=TITLE></b> <TMPL_VAR NAME=DATE>
<br>
<br>
<TMPL_VAR NAME=CONTENT>
<br>
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
模板输出很好,但在页面的底部,我得到的随机输出1的最后一个后</table>标记
</table>1
Run Code Online (Sandbox Code Playgroud)
该问题的任何解决方案?干杯
你的'admin_view'子打印.
因此,您不需要像这样调用它:
print &admin_view;
Run Code Online (Sandbox Code Playgroud)
因为通过这样做,它打印子的返回码.这是没有显式返回的最后一个命令的结果,因此向我们展示了print成功.
试试吧
admin_view;
Run Code Online (Sandbox Code Playgroud)
(失去&它的坏风格)