use 5.020; use List::AllUtils qw(first); use Encode; use utf8; use Benchmark ':hireswallclock'; sub daxim { my $string_of_characters = shift; first { $_ gt "\xff" } split //, $string_of_characters; } sub muffi { my $str = shift; $str !~ /^[\x{00}-\x{ff}]*$/; } sub GwenDragon { my $string = shift; scalar grep /[^\0-\x{ff}]/, $string; } my $string = 'a' x 10000 . '€'; say "daxim: ", encode('UTF-8',daxim($string)); say "muffi: ", muffi($string); say "GwenDragon: ", GwenDragon($string); timethese(10000, {'daxim' => sub { daxim($string) }, 'muffi' => sub { muffi($string) }, 'gwen ' => sub { GwenDragon($string) }, }, );