将单选按钮选择存储为变量perl cgi脚本

时间:2019-04-19 20:31:39

标签: perl cgi

我有一个使用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来说仍然是新事物,因此不胜感激

1 个答案:

答案 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和比较数字时要使用==。

保重。