in reply to printing array values

The program appears to work for other users, so I'm guessing your file has extra characters (perhaps a space, perhaps a carriage return) at the end of the lines. This is causing a problem for you, because you're using the file like so: /(.*) (.*)/. That means "zero or more characters, then a space, then zero or more characters". If your line is "ABCDEF 1 " (notice the space at the end), then $1 is "ABCDEF 1" and $2 is "". If the line is "ABCDEF 1\r" (where \r is a carriage return), then $1 is "ABCDEF" like you'd expect, but $2 is "1\r". Since you never print $2, you can't be sure!

Jeff japhy Pinyan, P.L., P.M., P.O.D, X.S.: Perl, regex, and perl hacker
How can we ever be the sold short or the cheated, we who for every service have long ago been overpaid? ~~ Meister Eckhart