Another article for your viewing pleasure. This
article
describes how to use Perl’s IO based IO::Handle IO system and a
couple of modules that allow you do to some interesting things like seamlessly
handle compressed files and calculate MD5 sums as you read a file in.

use IO::Digest;

my $fh = new IO::file($filename, "r");
my $iod = new IO::Digest($fh, ’MD5’);

read_and_parse($fh);

print $iod->hexdigest

I hate backticks. They have no place in modern shell programming.
Here is a couple of reasons why this is the case.

Not nestable

backticks, by their nature, are not nestable. You can not have a
command expansion inside another with back ticks.

command `foo ` bar ` baz`

Should the shell expand foo and baz or bar
and then foo <output of bar> baz? As it happens
it will run the first one. Using the modern command expansion syntax you
can write:

command $(foo $( bar ) baz)
command $(foo ) bar $( baz)

Backticks are invisible

The backtick symbol is too small and too easily confused with a
single quote to be used for writing maintainable code. The alternative
is significantly larger and therefore more obvious.

ls "'`!!`'"
ls "'$(!!)'"

Here is a zoomed version of the line above in my terminal:

Please consider using the bracketed version of command expansion
rather than backticks and make the world a nicer place