Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl:验证用户输入_Perl - Fatal编程技术网

Perl:验证用户输入

Perl:验证用户输入,perl,Perl,我正在尝试制作一个程序,我需要验证用户输入是否是IP的前两段,我已经有了验证模式是否为000.000的部分,但是我在验证数字是否低于256时遇到了问题。甚至当我试图打印@abc数组时,它也是空白的 @abc = split(".", $ARGV[0]); foreach $a (@abc){ if $a != [0 .. 256] { print "not an ip class" } else { print "it's an ip c

我正在尝试制作一个程序,我需要验证用户输入是否是IP的前两段,我已经有了验证模式是否为000.000的部分,但是我在验证数字是否低于256时遇到了问题。甚至当我试图打印@abc数组时,它也是空白的

@abc = split(".", $ARGV[0]);

foreach $a (@abc){
    if $a != [0 .. 256] {
        print "not an ip class"
    }
    else {
        print "it's an ip class"
    }
}

始终使用以下命令启动Perl程序

use strict;
use warnings;
第一个参数是正则表达式。您可以给它一个字符串,但这只会在运行时将字符串的内容解释为正则表达式

在正则表达式中是特殊的,匹配任何字符。你必须逃避它:

my @parts = split /\./, $ARGV[0];
不要使用名为
$a
$b
的变量;这些有点特殊,由内部使用

=比较两个数字。您不能使用它来查看元素是否是列表的一部分

你需要像这样做

for my $n (@parts) {
    if ($n <= 255) {
        print "ok\n";
    } else {
        print "not ok\n";
    }
}
用于我的$n(@parts){

如果OP的可能副本可以使用正则表达式来解决问题,但这并不能解释这段代码中的错误,我想这才是真正的问题。