我想检查CGI中的数字是以4还是5开头

时间:2010-12-14 22:13:43

标签: perl cgi if-statement

我需要在CGI中编写一些对我来说很新的脚本。如果条件编号从5或6开始,我正在尝试执行。如果编号以5开头则执行一个代码,如果编号以6开头则执行另一个代码。

2 个答案:

答案 0 :(得分:1)

我认为您不了解CGI是什么。 CGI只是一组由Web服务器设置的环境变量,您的程序随之执行。程序的输出成为网页。

因此,如果你想用Python,PHP,C,汇编,空白......编写一个CGI脚本,只要它可以被调用并使用环境变量,就可以了。

所以这真的是一个语言问题。你使用哪种语言?

编辑您在对此答案的评论中指定了Perl。我建议你编辑这个问题。

您输入的号码是多少? Perl脚本将使用一整套额外的环境变量运行。其中两个最重要的是QUERY_STRINGREQUEST_METHOD。 CGI由这些环境变量的规范组成,因此可以使用任何语言编写CGI。

考虑perl_cgi.cgi?something=else?后面的位是QUERY_STRING。您可以直接将其指定为锚点的一部分:

<a href="perl_cgi.cgi?something=else">Run with something equals else</a>

或作为表单的一部分(GET或POST之一,默认为GET):

<form action="perl_cgi.cgi" method="[GET or POST]">
    <input type="text" name="something" value="else"/>
    <input type="submit" value="Submit!"/>
</form>

这将使用与上面相同的查询字符串运行您的程序(如果文本框已更改,则运行不同的参数),但REQUEST_METHOD将取决于GETPOST

所以让我们编写一个Perl CGI脚本来打印我们得到的第一个字符串数(我们只传递字符串):

use CGI;
$cgi=new CGI;
$x=$cgi->param('x');
$firstnum=substr($x, 0, 1);
print "Content-type: text/html\n\n";

print <<"EOF";
<html>
<head>
<title>My sample HTML page</title>
</head>
<body>
<p>The first number of $x is $firstnum</p>
</body>
</html>
EOF

这预先假定该程序作为[program_name]运行?x = [some string]。这取决于你确保是这样的。

那应该给你足够的。您可以检查firstnum以查看其是否为5或6,然后执行不同的操作。

答案 1 :(得分:1)

use 5.013;
use warnings;
use Scalar::Util qw( looks_like_number );
use CGI;

my $param = CGI->new()->param('some_example');

given (substr $param, 0, 1) {
    when (! looks_like_number($_) ) { say 'Not a number'   }
    when (5)                        { say 'starts with 5'  }
    when (6)                        { say 'starts with 6'  }
}

或者,不是使用substr来获取第一个字母,而是将$ param和change(5)放到你选择的正则表达式中。