我有一个使用cgi的perl脚本,其中有2个单选按钮“运行时间”和“本地时间”。选择提交按钮后,如果选择了正常运行时间单选按钮,则我希望显示unix命令的正常运行时间;如果选择了“本地时间”单选按钮,则希望显示perl函数的本地时间。
以下是我所拥有的:
#!/usr/bin/env perl
use strict;
use warnings;
use CGI qw/:standard/;
my $loctime = localtime;
my $utime = qx( /usr/bin/uptime );
my $q = new CGI;
print $q->header;
print $q->start_html(-title => 'A time select');
print $q->radio_group(
-name => 'timeselect',
-values => ['uptime', 'localtime'],
-default => 'uptime',
-columns => 2,
-rows => 1,
);
print $q->submit(
-name => 'submit_form',
-value => 'Submit',
);
我假设我需要一个子例程或单击“提交”按钮时执行的程序。像下面这样
sub time_select {
if (radio_button = uptime)
{
print $utime
}
else
{
print $loctime
}
我不确定如何将选择的单选按钮传递到子程序中。对于perl和CGI来说仍然是新事物,因此不胜感激
答案 0 :(得分:0)
您应该阅读CGI和获取参数,它有几种不同的获取参数的方法,从非常简单到高级,还有一些需要注意的事项(如果要使用)在任何生产类型的环境中。 https://metacpan.org/pod/CGI
当您创建一个新的CGI对象(我的$ q = new CGI;)时,它将建立一个传递给它的参数列表。要访问参数,可以在CGI对象上调用param方法。
简单的事情:
if ($q->param('timeselect')) {
my $value = $q->param('timeselect');
if ( $value eq 'localtime' ) {
print localtime;
} elsif ( $value eq 'uptime' ) {
print `/usr/bin/uptime`;
}
}
对您将很好地工作,就我个人而言,我会摆脱顶部的正常运行时间和本地时间变量,以避免在没有传递参数的情况下调用它们。
关于比较的另一个快速注释。比较字符串时要使用eq和比较数字时要使用==。
保重。