in reply to efficient ftp of numerous files

How about populating your hash with the contents of your local directories keyed off the 3 digit directory. Then as you get the listing from ftp you can iterate over it and check what is in your hash (aka what you have locally). Perhaps File::Find might be of service.

347
 |-> 12345347.jpg
  -> 80780347.jpg
879
 |-> 34392879.jpg
  -> 37329879.jpg

and so on