in reply to changing a portion of a line leaving its formatting intact
Why would this be a problem?
You can replace $f[4] with with int($f[4]) . " " x (length $f[4] - length int($f[4]));
Or you could use a regex instead of split...
Regex you could use:
Compact form:
s/(\d+(?:\.\d+)?)(?=(?:\s+\S+){4}$)/int ($1) . " " x (length($1) - length(int($1)))/eg;
s/(\d+(?:\.\d+)?)(?=(?:\s+\S+){4}$)/int ($1) . " " x (length($1) - length(int($1)))/eg;
Long way:
s/ ( # Capture group $1 \d+ # Digits (?: # Group (no capturing) (optional group) \. # a dot \d+ # Digits )? ) # End capture $1 (?= # Open look-ahead (?: # Group (no capturing) \s+ # Whitespace \S+ # Non-whitespace ) {4} # Match previous group exactly four times $ # Match end of line ) /int ($1) . " " x (length($1) - length(int($1)))/egx;
Note: small version tested, big version untested
Update: forgot length, added a possible regex
In Section
Seekers of Perl Wisdom