Neighbour has asked for the wisdom of the Perl Monks concerning the following question:
I'm looking for a way to trim specific characters from the beginning of a substring at a specified location,length, and add (and this is the hard part) an amount of <padding character>s equal to the trimmed length to the end of the substring in order to keep the entire string (which is part of a fixed-length datastream) intact.
If the trimmed character is the same as the padding character, this bit of code does the trick:
I've tried
Any help is welcome :)
Edit: Using ''s inside a ''-command isn't useful, replacing them with ""s made it go, but not quite right.
If the trimmed character is the same as the padding character, this bit of code does the trick:
However, when the padding character is different from the trimmed character, $1 won't suffice :).perl -pi -e 'substr($_,589,35) =~ s/(\s*)(\w+)*/$2$1/ if /^(.{589})(\s +{1,34})/' file.txt
I've tried
but that doesn't seem to work (maybe because $? is only allowed in the "matching"-part of a regex?perl -pi -e 'substr($_,589,35) =~ s/(0*)(\w+)*/$2($?{ ' ' x length($1) + })/ if /^(.{589})(0{1,34})/' file.txt
Any help is welcome :)
Edit: Using ''s inside a ''-command isn't useful, replacing them with ""s made it go, but not quite right.
The 00 that gets trimmed gets replaced by ()with this code.perl -pi -e 'substr($_,589,35) =~ s/(0*)(\w+)*/$2($?{ " " x length($1) + })/ if /^(.{589})(0{1,34})/' file.txt
Back to
Seekers of Perl Wisdom