The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use v5.20;

use Test::More;

use Object::Exercise;

my $frob = Frobnicate->new;

my @testz =
(
    verbose =>

    [ [ qw( set foo bar ) ], [ qw( bar ) ]  ],
    [ [ qw( get foo     ) ], [ qw( bar ) ]  ],

    # same result in both cases

    [
        noverbose =>

        [ qw( set foo     ) ], [ qw( bar ) ]
    ],
    [
        'verbose=0',
        
        [ qw( get foo     ) ], [ undef     ] 
    ],

);

$frob->$exercise( @testz );

package Frobnicate;

use strict;

sub new
{
    my $proto = shift;

    bless {}, ref $proto || $proto
}

sub set
{
    my ( $obj, $key, $value ) = @_;

    @_ > 2
    ? $obj->{ $key } = $value
    : delete $obj->{ $key }
}

sub get
{
    my ( $obj, $key ) = @_;

    $obj->{ $key }
}

0
__END__