in reply to Re^2: Returning transliteration from eval
in thread Returning transliteration from eval

Habitual backslasher ikegami might have something to say about it but single (non-interpolating/literal) quotes can be a bit easier to read.

( eval '( $string1 | $string2 ) =~ tr[$n1][$n1]' ), ( eval '( ~$string1 & $string2 ) =~ tr[$ndiff][$ndiff]' ), ( eval '( $string1 & ~$string2 ) =~ tr[$ndiff][$ndiff]' ), ( eval '( $string1 & $string2 ) =~ tr[$n2][$n2]' ) ),

Update: my eyes are getting old. I missed the interpolation in the trs.

Replies are listed 'Best First'.
Re^4: Returning transliteration from eval
by Anonyrnous Monk (Hermit) on Jan 28, 2011 at 16:52 UTC

    ...but that wouldn't interpolate where interpoplation is needed ($n1, $n2 and $ndiff).

    (With single quotes, the resulting code such as ( ~$string1 & $string2 ) =~ tr[$ndiff][$ndiff] would count the total number of characters belonging to the set '$','n','d','i','f' — which is not what is intended here.)

    print 'f $ d d i $ n' =~ tr/$ndiff/$ndiff/; # 7

    (Update: added sample code for the downvoter, who apparently didn't get it.)

      Oh, quite right. Bad reading on my part. :(