I know this has already been answered, but it's probably worth going into more detail, as it has to do with how boxes relate to other parts of the code. Putting use Digest::SHA1 in startup.pl was the right thing to do, as it loads the module at startup (which saves memory), but you don't want to import any functions, which is what the qw(...) part does. Mostly, that's because they won't work everywhere, as you found out. When you import a function, it goes into the current namespace. In startup.pl, there isn't an explicitly set namespace, though that could be changed. But if we did make all those things be imported into the Scoop package (which is what nearly all the code in Scoop runs under), it still wouldn't work in boxes, because each box runs in its own package, as a sort of sandbox to keep boxes on different sites seperate. So, in coming to the solution someone has already pointed out, instead of importing functions when you load a module, you pretty much have to use the extra keystrokes and directly call the functions, or use an object-oriented interface if there is one. With Digest::SHA1, you can use either, though it's probably easier to just go ahead and call Digest::SHA1::sha1_hex(...). You'll see the same thing done other places in scoop, like with the calling of Crypt::UnixCrypt or String::Random. -- Keith Smiley -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available Url : http://lists.kuro5hin.org/pipermail/scoop-dev/attachments/20031026/82e209a2/attachment.bin