You could write a sub that would create the temp variable for you and return it:
#!/usr/bin/perl -w use strict; foreach my $str (qw(fish apple license gradual canaan)) { print sr($str,'s/([aeiou])/\u$1/g'),"\n"; } sub sr { my($in,$re)=@_; eval "\$in =~ $re;"; $@ and die "Bad regex '$re'\n"; $in; }
although a temp variable is still being created, just not explicitly.

This is probably the best you're going to be able to do (although there's probably a way to do it without eval), since doing something nondestructively means that the original must be kept intact, so there have to be two copies of the variable.


In reply to Re: Non-destructive string substitution by sgifford
in thread Non-destructive string substitution by Sprad

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.