Perl base64 encode and decode with checks

Perl
use strict;
use warnings;
use MIME::Base64 qw(encode_base64 decode_base64);

sub to_base64 {
    my ($bytes, %opt) = @_;
    my $enc = encode_base64($bytes, $opt{wrap} ? "\n" : '');
    return $enc;
}

sub from_base64 {
    my ($text) = @_;
    (my $clean = $text // '') =~ s/\s+//g;
    die "invalid base64 length\n" if length($clean) % 4;
    die "invalid base64 characters\n" unless $clean =~ m{\A[A-Za-z0-9+/]*={0,2}\z};
    my $bytes = decode_base64($clean);
    die "invalid base64 payload\n" unless encode_base64($bytes, '') eq $clean;
    return $bytes;
}
my $enc = to_base64('hello bits');
print $enc, ' ', from_base64($enc), "\n";