in reply to Using 'lc' (lowercase) in a reg ex
There are three basic ways to do this (some of which were covered by other posters already.)
First, you could use /e. /e makes the right-hand-side of your s/// an expression, rather then a double-quoted string:
$newfile =~ s/\b([A-Z]{2,})\b/"\\emph{".lc($1)."}"/g;
Second, you could use \L ... \E, which lowercases inside of doublequotes:
$newfile =~ s/\b([A-Z]{2,})\b/\\emph{\L$1\E}/g;
Thirdly, you could use a trick to allow you to embed code within a doublequoted string:
$newfile =~ s/\b([A-Z]{2,})\b/\\emph{@{[lc $1]}}/g;
Which one to use is up to you; all three do the same thing, and on some level, operate in similar ways. Use whatever you think is most clear. (Well, whichever your intended audiance will find most clear, but that often is yourself.) (I'd use #1 or #3 myself. I had to read perlop to check if it was \L or \l I wanted.
|
|---|