Judging from the File::Fetch error handling documentation and source, all you get is a string containing the error details (e.g. via $ff->error in your example). Depending on what underlying module is used to perform the actual fetch, you might be able to ascertain the HTTP response info and parse it out. For example, if File::Fetch uses LWP, the following example error includes HTTP 500 in the error message:
Fetch failed! HTTP response: 500 Internal Server Error [500 Can't
connect to some.where.com:80 (Bad hostname)] at fetch.pl line 8.
Please note that if you attempt to parse from the error string, you should be sure that you know which underlying module is being used to do the fetch (e.g. lwp, httptiny, wget, etc.) since the error message format is not identical.
If the HTTP response is really important to you, it may make more sense to switch to something like LWP where this info is consistently and reliably available programmatically without worrying about parsing (e.g. through a dedicated response object in the case of LWP).