【问题标题】:Perl: Verifying user inputPerl:验证用户输入
【发布时间】:2019-08-05 05:26:53
【问题描述】:

我正在尝试制作一个程序,我需要验证用户输入是否是 IP 的前 2 段,我已经有验证模式是否为 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


【解决方案1】:

始终使用

启动您的 Perl 程序
use strict;
use warnings;

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

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

my @parts = split /\./, $ARGV[0];

不要使用名为$a$b 的变量;这些有点特殊,由sort 内部使用。

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

你需要做类似的事情

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

如果您已经验证 $n 仅包含数字,则它不能为负数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多