in reply to beginner - understanding use strict

Note the line use Digest::MD5 'md5_hex';. The use directive is a mechanism for importing functions into your local package. Specifically, it functions as a BEGIN block (see BEGIN, UNITCHECK, CHECK, INIT and END in perlmod) wrapping a require (checking that a module exists and compiles) and an import. If the use statement is unqualified, as with use Carp; in your example, the default import list will be brought into your local namespace. This means carp will provide you with carp, croak and confess with no extra effort on your part. In the case of Digest::MD5, the string 'md5_hex' overrides the default import list, specifying you want the function in question and only that function imported.