in reply to Perl MySql

You shouldn't shift elements out of the array in your foreach loop. That will cause you to miss fields.

$ perl -e'@f=qw/foo bar baz/;for (@f) {print;shift @f}' foobaz$
You can eliminate the inner loop entirely with,
while (@report = $sth->fetchrow_array()) { print SAVE join("\t", @report), $/; }
I don't see anything in your code that would limit the number of records you can fetch or print. I don't see where *SAVE is opened. Are you checking that open succeeds?

After Compline,
Zaxo