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