in reply to Re^2: Unabled to use exported routine
in thread Unable to use exported routine

Well, I am not so familiar with the internal Perl actions, but I assume the problem is something like this:

use dir::mod; is internally a combination of require dir::mod; and import dir::mod;.

require dir::mod works, as it is translated into a file path dir/mod.pm and that file is found and read. Then it tries to import the exported stuff from the dir::mod namespace. But this is not defined as your package name is mod, and not dir::mod.

If you'd call mod::hello() your script should work.