To find out the errors from an external command, like mkdir, then you should read the doocumentation for that command. For mkdir(1) the POSIX standard gives two possible return codes, 0 (success) and >0 (failure), but does not mention error messages. The man pages on Linux don't give any more information.
For built-ins like mkdir, they are (mostly) based on the C API of the same name, so we look at sections 2 and 3 of the man pages, for example:
man 2 mkdir
This will usually give a list of error numbers from $! which can be tested for (the POSIX standard is similar). These are exposed within Perl through the
Errno module. The POSIX standard lists: EACCES, EEXIST, ELOOP, EMLINK, ENAMETOOLONG, ENOENT, ENOSPC, ENOTDIR, EROFS, but your UNIX/Linx implememtation could have more.
On Windows,
mkdir /? gives no information on errors. For the C interface, consult the MSDN mkdir, which only lists EEXIST and ENOENT as possible errors. However, that does make the assumption that your Windows implementaion uses the POSIX mkdir or ISO C _mkdir, it could be using the Win32 API CreateDirectory instead. The good news on that though is that the possible errors are similar to mkdir.