Perl Mason 奇怪的行为 - 编译在 $m 处出现错误,而 $m 不存在

问题描述 投票:0回答:1

我有这段代码(缩短):

my $lins = $dbh->selectall_arrayref("SELECT id, name, popis, pic FROM line", { Slice => {} }) or die 'Query (SELECT from line) failed';
...
my $sth = $dbh->prepare("SELECT id, name, line_id, colorset_id FROM products WHERE id=?");
if ($prod_id =~ /^[0-9]+$/ ) {
        $sth->execute($prod_id);
        my $prod;
        while ($prod = $sth->fetchrow_hashref) {
                print "I have ".$prod->{id}." ". $prod->{name}." <br>";
</%perl>
...
<tr><td>Model row</td><td>
<select id="line_id" name="line_id">
% foreach my $lined (@$lins) {
% if ( $lined->{id} == $prod->{line_id} {
<option value="<% $lined->{id} %>" selected><% $lined->{name} %></option>
% } else {
<option value="<% $lined->{id} %>"><% $lined->{name} %></option>
% }
% }
</select>
...

编译有问题:

error:      Error during compilation of /var/www/mason/eshop/prod.mas:
syntax error at /var/www/mason/eshop/prod.mas line 83, near "$m"
Execution of /var/www/mason/eshop/prod.mas aborted due to compilation errors.
context:    
...     
79:     <tr><td>Modelova rada</td><td>
80:     <select id="line_id" name="line_id">
81:     % foreach my $lined (@$lins) {
82:     % if ( $lined->{id} == $prod->{line_id} {
83:     <option value="<% $lined->{id} %>" selected><% $lined->{name} %></option>
84:     % } else {
85:     <option value="<% $lined->{id} %>"><% $lined->{name} %></option>
86:     % }
87:     % }
...     

如您所见,第 83 行没有任何可疑之处。使用另一个变量 (colorset_id) 的相同机制效果很好。 你有人知道这是怎么回事吗?正如编译器所说,没有任何对 $m 的引用..我很困惑......

perl compilation mason
1个回答
0
投票

啊啊啊! if 条件存在语法错误 - 缺少括号“)” 抱歉问这个问题,我花了几个小时:-(

© www.soinside.com 2019 - 2024. All rights reserved.