use strict;
use warnings;
####
my $fpath = '/somewhere/in';
my $fname = 'input.dat';
my $fn = "$fpath/$fname";
die "$fn: $!" unless -f $fn;
####
my $content;
{
open my $fh, '<', $fn or die "$fn: $!";
local $/;
$content = <$fh>;
}
####
my %counts;
$counts{CHARS} = length $content;
$counts{WORDS} = scalar( () = $content =~ /\b/g ) / 2;
$counts{SENTN} = scalar( () = $content =~ /\w\.\W/g );
$counts{PARAS} = scalar( () = $content =~ /\n/g ) + 1;
####
for my $key (sort keys %counts) {
print "$key ==> $counts{$key}\n"
}