shobhit has asked for the wisdom of the Perl Monks concerning the following question:
I have an input file with 5 columns separated by single space. The first column is of width n (4 in this case). The second column is of width m (4 in this case). The rest of the columns are of variable width. I need to change the ith character (2 in this case) in second column (i<m) make it 'Y' say AND APPEND it as a third column.
Input fileOutput filecol1 col2 col3 col4 col5 1234 5678 9012 3456 7890
The following program does it just fine.col1 col2 cYl2 col3 col4 col5 1234 5678 5Y78 9012 3456 7890
My question is, is it possible to accomplish this in one s/// command? We can use \1 and \2 etc to reference the pattern we just matched, but I can't figure out how to do it here. Is it even possible?use strict; use warnings; my $line; while($line=<>){ chomp $line; $line =~ s/(.{5})(.{4})(.*)/$1$2 $2$3/; $line =~ s/(.{11}).(.*)/$1Y$2/; print $line."\n"; }
Thanks for any help with this.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Search patern within pattern in a single substitute command
by BrowserUk (Patriarch) on Mar 04, 2011 at 01:06 UTC | |
by toolic (Bishop) on Mar 04, 2011 at 01:37 UTC | |
by shobhit (Sexton) on Mar 04, 2011 at 04:57 UTC | |
by BrowserUk (Patriarch) on Mar 04, 2011 at 05:24 UTC | |
by shobhit (Sexton) on Mar 04, 2011 at 05:40 UTC | |
|
Re: Search pattern within pattern in a single substitute command
by toolic (Bishop) on Mar 04, 2011 at 01:02 UTC |