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 No を入力してください: 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 に答える