You'll probably want to use something like grep /\.jpg/, readdir(DIR) to get your list of files.
You might even want to sort them, as you go through,
split off the back extension, and check the prefix.
You'll want to check to make sure your prefix is
just made of digits. If not, figure out what you want to do with it. If so, sprintf("%06d", $var) for your new prefix and look into substr for getting the first three chars of that.
Then go ahead and make your sub-directories as needed, and make sure you already don't have the numbered file before you rename it. Since your original dir may have a 001234.jpg and 01234.jpg in it.