文字列に ASCII コードしか使われていないかどうかを判定する修行

Perl で、文字列が ASCII コードの文字だけで構成されているかどうか調べたい。Encode で何かできるのかな、できるならそれを使うべきだ、と思ったのだが、そういう方法は見つけられていない。
とりあえず、ord 関数でトップビットが立っていないかを調べる方法を使ってみた。より正しい方法を知っている人、よろしく。

use strict;
use warnings;
use utf8;
use Encode;

sub is_ascii {
    my $str = shift;
    foreach my $ch (split(q{}, $str)) {
        return 0 if ord($ch) > 127;
    }
    return 1;
}

while (my $line = <DATA>) {
    $line =~ s{ [\n\r]+ \z }{}xms;
    my ($is_utf8, $is_ascii) = (Encode::is_utf8($line), is_ascii($line));
    print encode_utf8("$is_utf8, $is_ascii, $line\n");
}

__DATA__
テスト
test
てすと deth
Another Test String Including TAB
[takeyuki@sunya ~]$ perl f.pl
1, 0, テスト
1, 1, test
1, 0, てすと deth
1, 1, Another Test String       Including TAB