In article <[EMAIL PROTECTED]>, Sudarshan Raghavan 
wrote:

> Nelson Ray wrote:
> 
>>Does anyone know of any sort of a function or method in perl that returns
>>the number of times a search string exists in a scalar.  Say, how many
>>"a's"
>>are there in this sentence?  I am able to write it myself, but I was
>>wondering if Perl had an inherent function for cleaner operation.  I tried
>>looking through the list of functions at www.perldoc.com without success.
>>Thanks a lot for any help.
>>
> 
> tr/// is what you need, perldoc perlop
> Assuming your string is in $_, the number of a's will be
> my $acnt = tr/a//;

Thanks to Sudarshan & Janek!

I found this as suggested...

# NOTE: (from perlop)
# Because the transliteration table is built at com­
# pile time, neither the SEARCHLIST nor the REPLACE­
# MENTLIST are subjected to double quote interpola­
# tion.  That means that if you want to use vari­
# ables, you must use an eval():
#
# eval "tr/$oldlist/$newlist/";
# die $@ if $@;
#
# eval "tr/$oldlist/$newlist/, 1" or die $@;

But what I can't figure out (and have tried several variants) is how to get 
the count when using a variable (ala' from inside an eval). This is the 
closet I got:

my $sentence = "Here is my test sentence.\n";
my $letter = 'e';
my $count;

eval {$count = $sentence =~ tr/$letter//};
die $@ if $@;

print "The letter $letter appears $count times in the sentence...";

It produces "The letter e appears 10 times..." but the answer should be "6". 
:-(













-- 
Kevin Pfeiffer
International University Bremen

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to