#! /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
我试图找出每个没有出现的次数以及所有数字的总数。如何拆分每个数字并找到它的出现
#! /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
我试图找出每个没有出现的次数以及所有数字的总数。如何拆分每个数字并找到它的出现
你还没有声明 $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";
}
}