[Israel.pm] count chars

Amir E. Aharoni amir.aharoni at gmail.com
Mon Sep 3 03:38:05 PDT 2007

What is the best way to count the number of times that a character
appears in a string?

Currently i do this:

my $string = "abracadabra";
my @matches = ($string =~ /a/g);
print scalar @matches; # 5
print "@matches"; # a a a a a

Is there a way to do it without the intermediate array?

This doesn't work:

my $string = "abracadabra";
print scalar ($string =~ /a/g); # prints 1!

I can use this:

my $matches = ($string =~ s/(a)/$1/g);

It replaces the characters with itself and returns the number of
substitutions, but it doesn't improve readability.

Any other ideas?

Amir Elisha Aharoni
words: http://aharoni.wordpress.com/
music: http://www.myspace.com/tzabari/

More information about the Perl mailing list