[Israel.pm] count chars

Tal Kelrich tal at musicgenome.com
Mon Sep 3 03:48:40 PDT 2007


On Mon, 3 Sep 2007 13:38:05 +0300
"Amir E. Aharoni" <amir.aharoni at gmail.com> wrote:

> 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?
> 

Here's another, is ugly tho

my $string = "abracadabra";
print scalar(@{[$string=~/a/g]});

-- 
Tal Kelrich
PGP fingerprint: 3EDF FCC5 60BB 4729 AB2F  CAE6 FEC1 9AAC 12B9 AA69
Key Available at: http://www.hasturkun.com/pub.txt
----
Agree with them now, it will save so much time.
----
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://perl.org.il/pipermail/perl/attachments/20070903/efcac706/attachment.pgp 


More information about the Perl mailing list