The s/// substitution /r modifier is only available from Perl version 5.14 onwards. kennethk has shown how to use the /r modifier, but if you have a Perl version prior to 5.14 and wish to preserve the original string, use method B below:
c:\@Work\Perl>perl -wMstrict -le
"my $adate = '2017-01-29 11:30:07.370';
;;
my $A_new = $adate =~ s/(\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2})(.*)/
+$2-$3-$1 $4:$5/r;
print qq{A: new '$A_new' old '$adate'};
;;
(my $B_new = $adate) =~ s/(\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2})(.*
+)/$2-$3-$1 $4:$5/;
print qq{B: new '$B_new' old '$adate'};
"
A: new '01-29-2017 11:30' old '2017-01-29 11:30:07.370'
B: new '01-29-2017 11:30' old '2017-01-29 11:30:07.370'
In both cases, the original string, $adate in this case, is left unchanged. If you do not mind changing this variable, just use a normal $string =~ s/// substitution.
Give a man a fish: <%-{-{-{-<
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|