in reply to Assigning a parsed date to a variable
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:
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.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'
Give a man a fish: <%-{-{-{-<
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Assigning a parsed date to a variable
by Anonymous Monk on Mar 30, 2017 at 20:00 UTC | |
by Laurent_R (Canon) on Mar 30, 2017 at 21:48 UTC | |
by AnomalousMonk (Archbishop) on Mar 30, 2017 at 23:19 UTC |