Currently, POSIX doesn't require you to import anything - and I think your solution does. Furthermore, your solution fixes the problem of the missing prototype at the cost of why POSIX's constants don't have prototypes: in order to reduce the overhead of 'use POSIX', functions are autoloaded - you don't pay compile costs for functions you don't need. Your solution does a string eval for each all caps function. Then you might as well have listed all of them in POSIX.pm.