0
#! /usr/bin/perl 
use strict;
use warnings;
my @array = ('0'..'9');
print "Enter the inp No's : ";
while (($inp = <STDIN>) cmp "\n"){

}

angus > perl no.pl 输入 inp 号:12123213123

我试图找出每个没有出现的次数以及所有数字的总数。如何拆分每个数字并找到它的出现

4

1 回答 1

3

你还没有声明 $inp。此外,你的用法cmp很奇怪,简单ne的工作方式相同,不会混淆任何人。

您可以使用空模式将字符串拆分为字符,split然后计算哈希中出现的次数:

#!/usr/bin/perl
use warnings;
use strict;

print "Enter the inp No's : ";
while ((my $inp = <STDIN>) ne "\n"){
    my %digits;
    $digits{$_}++ for split //, $inp;
    for (0 .. 9) {
        print "$_ ", $digits{$_} || 0, "\n";
    }
}

但是,规范的方法是使用tr运算符。由于它没有插值,我们必须使用 eval 来获取里面的变量值:

#!/usr/bin/perl
use warnings;
use strict;

print "Enter the inp No's : ";
my %digits;
while ((my $inp = <STDIN>) ne "\n"){
    for (0 .. 9) {
        my $n = eval "\$inp =~ tr/$_//";
        print "$_ $n\n";
    }
}
于 2013-08-18T07:27:45.910 回答