Kevin Pfeiffer said:

> 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".
> :-(

You didn't follow the example - you changed the quotes for the eval.

You need this:

  eval "\$count = \$sentence =~ tr/$letter//";

or even better:

  $count = eval "\$sentence =~ tr/$letter//";

Read up on the two different types of eval, then you should be able to
find out why you got 10.

-- 
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net


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

Reply via email to