Perl变量不显示正确的值

时间:2011-08-30 20:05:27

标签: perl variables

我会再次尝试这个问题,因为显然是我最后一次提出这个问题,我没有做得很好......再来一次:

我有一些代码,它从Web表单中获取参数,并且根据输入参数应该在textarea中显示文本。

设置$ defMessage变量的if语句正常运行,但无论输入变量值是什么,textarea中的默认文本都不会更改为存储在$ defMessage中的实际值。

有人能说出为什么会发生这种情况吗?

my $defMessage = undef;

$defMessage = 'CONCAT 1';

if ($templateLength =~ SEND_OPTIONS_CONCAT_1) {
    $defMessage = 'CONCAT 1';
} elsif ($templateLength =~ SEND_OPTIONS_CONCAT_2) {
    $defMessage = 'CONCAT 2';
} elsif ($templateLength =~ SEND_OPTIONS_CONCAT_3) {
    $defMessage = 'CONCAT 3';
}

print $q->start_form(
    -name=>'main',
    -method=>'POST',
);

print $q->start_table(
    {-align=>'center', -border=>1}
);
print $q->Tr(
    $q->td(
        {-align=>'center'},
        'Message<br>'.$q->textarea(
            -name=>'sendMessage',
            -size=>15,
            -rows=>10,
            -columns=>15,
            -value=>$defMessage,
        ),
    ),
);

我尝试过更改

my $defMessage = undef;

use vars qw($defMessage);

但这也不起作用......

2 个答案:

答案 0 :(得分:4)

如果您正在处理的请求提供了field_name参数,则CGI将使用该值而不是您提供的默认值,除非您使用-override=>1调用textarea或明确更改参数($q->param('field_name',$defMessage))在致电textarea之前。

这不是特定于textarea; 所有 CGI的表单输入方法都是这样工作的。

答案 1 :(得分:0)

文本区域项与HTML中的其他控件不同,因为未使用value属性。相反,项目的内容是重要的。这显示在略有不同的界面中。 CGI文档(请参阅:http://search.cpan.org/dist/CGI/lib/CGI.pm#CREATING_A_BIG_TEXT_FIELD)显示默认值使用的密钥是-default,而不是-value

所以,试试:

'Message<br>'.$q->textarea(
            -name=>'sendMessage',
#           -size=>15,              # Deleted, doesn't apply to textarea controls
            -rows=>10,
            -columns=>15,
            -default=>$defMessage,  # Amended line
        ),
相关问题