From: Jeff Pinyan Date: Tue, 29 May 2001 18:03:27 +0000 (-0400) Subject: Re: [PATCH] perlfaq6.pod -- case-aware s/// X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=74b9445a971233515f866c1f132853d3cb88841a;p=p5sagit%2Fp5-mst-13.2.git Re: [PATCH] perlfaq6.pod -- case-aware s/// Message-ID: p4raw-id: //depot/perl@10303 --- diff --git a/pod/perlfaq6.pod b/pod/perlfaq6.pod index ed6c01b..45f0966 100644 --- a/pod/perlfaq6.pod +++ b/pod/perlfaq6.pod @@ -212,6 +212,21 @@ This prints: this is a SUcCESS case +As an alternative, to keep the case of the replacement word if it is +longer than the original, you can use this code, by Jeff Pinyan: + + sub preserve_case { + my ($from, $to) = @_; + my ($lf, $lt) = map length, @_; + + if ($lt < $lf) { $from = substr $from, 0, $lt } + else { $from .= substr $to, $lf } + + return uc $to | ($from ^ uc $from); + } + +This changes the sentence to "this is a SUcCess case." + Just to show that C programmers can write C in any programming language, if you prefer a more C-like solution, the following script makes the substitution have the same case, letter by letter, as the original.