use Encode; my $filename = "whatever"; eval { open my $file, "<:raw", $filename or die $!; local $/; local $_ = <$file>; decode( "utf8", $_, Encode::FB_CROAK ); } die "$filename is invalid utf8: $@\n" if $@;