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.