On Thu, Nov 29, 2001 at 11:53:38AM -0500, Johnson, Shaunn wrote:
> [sample]
> 
> 2001q2  06      P92786          IEMMM01         1       6
> 2001q2  06      P92786          IEMMM01         1       8
> 2001q2  06      P56576          IEMFF01         1       23
> 
> [result]
> 
> 2001q2  06      P92786          IEMMM01         1       06
> 2001q2  06      P92786          IEMMM01         1       08
> 2001q2  06      P56576          IEMFF01         1       23

OK.

> Between the fields are spaces AND tabs.  I thought I'd
> have to figure out how to split the file, make an array 
> out of each column and then rewrite / edit into the same
> file.
> 
> I think it should be easy if I do something like:
> 
> $vals[5] =~ s/(\w+)/(0$1)/g;

You're doing too much work.

The last field in this series of columns is a number, and you want
to display that as a 2-digit quantity (with leading zero).  No need
to split out the columns only to rebuild them again, since you're
looking for the *last* column in the file.

The trick is to use sprintf (that's why it's there), and the /e modifier
in your regex.

Here's a sample solution:


        #!/usr/bin/perl -w
        use strict;

        while (<DATA>) {
                s/(\d+)$/sprintf("%02d", $1)/e;
                print;
        }

        __DATA__
        2001q2  06      P92786          IEMMM01         1       6
        2001q2  06      P92786          IEMMM01         1       8
        2001q2  06      P56576          IEMFF01         1       23

Z.


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to