This is a place where coding conventions can come in handy. You (or someone) sets down what techniques and structures are generally acceptable, which aren't, and (by omission) where the grey areas are. Someone should take a look at the tasks generally done, as well as the skill and clue levels of the average programmer in the environment, and set out what's considered appropriate and inappropriate, and where that's true.
This'll differ from place to place. You may find that Inline::C code is just fine in mainline programs, others may consider it OK in libraries, and still others may decide not to use it at all. The same for fancy data structures, or closures, or threads, or forking servers with SysV IPC and memory sharing.