Сохранить выбор радиокнопки как переменную perl cgi script - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть скрипт на Perl, использующий cgi, где у меня есть 2 переключателя: «uptime» и «localtime».Когда выбрана кнопка отправки, я ищу отображение времени работы Unix-команды, если выбрана радиокнопка uptime, и функции perl localtime, если выбрана радиокнопка «localtime».

Ниже приведено то, что у меня есть:

#!/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 голосов
/ 22 апреля 2019

Вы должны прочитать о CGI и получении параметров, в нем есть несколько различных методов получения параметров, которые вас заинтересуют, от очень простого до продвинутого, а также несколько вещей, о которых вам нужно знать, если это будет использоваться.в любой производственной среде.https://metacpan.org/pod/CGI

Когда вы создаете новый объект CGI (my $ q = new CGI;), он создает список параметров, переданных ему.Чтобы получить доступ к параметрам, вы можете вызвать метод param для вашего CGI-объекта.

Что-то простое, например:

if ($q->param('timeselect')) {
    my $value = $q->param('timeselect');
    if ( $value eq 'localtime' ) {
        print localtime;
    } elsif ( $value eq 'uptime' ) {
        print `/usr/bin/uptime`;
    }
}

Будет хорошо работать для вас, лично я бы избавился от вашего времени работы и местного временипеременные сверху, чтобы избежать их вызова при отсутствии переданных параметров.

Также еще одно быстрое замечание по сравнению.При сравнении строк вы хотите использовать eq, а при сравнении чисел вы хотите использовать ==.

Берегите себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...