The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Enbld::Target::AttributeExtension::URL;

use strict;
use warnings;

use Carp;

use parent qw/Enbld::Target::AttributeExtension::Word/;

sub validate {
    my ( $self, $string ) = @_;

    $self->SUPER::validate( $string );

    my $pattern = q{s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+};

    if ( $string !~ /^$pattern$/ ) {
        my $type = ref( $self );
        $type =~ s/.*:://;
        require Enbld::Exception;
        croak( Enbld::Exception->new(
            "Attribute '$type' isn't valid URL string", $string
        ));
    }
}

1;