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

Store Radio Button selection as variable perl cgi script

我有一个使用 cgi 的 perl 脚本,其中有 2 个单选按钮 "uptime" 和 "localtime"。选择提交按钮后,如果选择了正常运行时间单选按钮,我希望显示 unix 命令正常运行时间;如果选择 "localtime" 单选按钮,我希望显示 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​​ 还是新手,所以感谢您的帮助

你应该仔细阅读 CGI 和获取参数,它有几种不同的获取参数的方法,从非常简单到高级,你会感兴趣,如果要这样做的话,还有一些你需要注意的事情用于任何生产类型的环境。 https://metacpan.org/pod/CGI

当您创建一个新的 CGI 对象 (my $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 ,比较数字时要使用 ==.

保重。