Another possibility which may not apply in your situation is to run a straight recursive directory listing into a text file then write a perl script to parse that.
The fastest of course would be to run the listing on the remote machine and then transfer the listing file to the local machine.
Second fastest might be to do the listing over the network and save the output locally and run a parsing script on that. Of course if an over the network directory listing takes 5 hours to complete you don't save a lot of time.
use strict;
while(<>)
{
push(@files) if /\.sgml$/;
}