In Perl a tab-character is encoded as \t. However, what you will try to do will not work: the tab-delimited file already contains the results of the formulas, so the cell which contains 30/45 (or rather the formula =30/45) gets "translated" to 0.666667 in the tab-delimited file. Of course if your users have failed to write "=30/45" and foolishly put "30/45" instead you need to correct this and Perl can help you. Conceptually I would do it as follows:
- open the tab-delimited file
- read one line at a time and split on \t
- 'for each' through the results of the split searching for the pattern "number/number" and calculating the result.
- replace the original value by the result
- print to an output file the values (changed as necessary) of columns 1, 2 and 3
- join the values of columns 1, 4 and 5 with \t and push it in an array
- After having read all lines, output the contents of the array which contains the values of columns 1, 4 and 5
Surely some brighter monks than I will point out that the splitting, regex-ing and replacing can be done in one go through the use of map. CountZero "If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law
|