2016-04-10 16 views
0

Ich habe ein Array, das nur Buchstaben enthält, keine Ziffern. Ich möchte zählen, wie oft ein bestimmter Brief angezeigt wird. Ich möchte keinen Hash verwenden, ich muss die Reihenfolge der Liste beibehalten.Wie zähle ich die Anzahl bestimmter Buchstaben in einem Array, Perl?

use strict; 
use warnings; 

my %counts; 
$counts{$_}++ for @array; 
print "$counts\n"; 
+0

zeigen Bitte Abtastwerteingang und die erwartete Ausgabe. – zdim

+0

Was nicht klar ist, ist, ob eine Zeichenfolge im Array wie "aaa" als 1 oder 3 zählen soll. – Zaid

Antwort

1

Verwenden grep es

my @ar = qw(abc cde fgh 123 abc); 
my $count = grep{ /ab/} @ar; 
print $count; 

Oder verwenden foreach

my @ar = qw(abc cde fgh 123 abc); 
my $m; 
$m+= /ab/,foreach (@ar); 
print $m; 

Während das Spiel $m inkrementiert angetroffen wurde, zu tun.

2

Der Code, den Sie haben scheint zu finden, um die Vorkommen zu zählen. Das einzige Problem, das Sie haben, ist, die Zählungen anzuzeigen. Sie verwenden eine neue Skalarvariable namens $counts, die nicht deklariert und leer ist.

Was Sie wollen, ist dies:

use strict; 
use warnings; 

my %counts; 
$counts{$_}++ for @array; 
print "$_: $counts{$_}\n" for keys %counts; 
Verwandte Themen