in reply to This should be easy: counting letters in a string
The transliteration does not interpolate the variable as you expect in your sample. The following illustrates the use of eval.
You can also use a substitution in order to interpolate but avoid the eval.use strict; use warnings; my @letters = qw (A B C D E F); my $string = "AFTYUBEWTWECRTUTYIYTDDDDRYJURTHJTREEEEEFGSDFF"; my $count; foreach my $a(@letters) { eval "\$count = \$string =~ tr/$a//"; print "$count\n"; }
Both methods change the string. A more flexible way to count the values would be to split the string and use a hash to store the values.$count = $string =~ s/$a//g;
my %count; $count{$_}++ foreach split //, $string; print "$count{$_}\n" foreach (@letters);
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: This should be easy: counting letters in a string
by Roy Johnson (Monsignor) on Jan 31, 2006 at 14:46 UTC |
In Section
Seekers of Perl Wisdom