#!/usr/bin/env perl use warnings; use strict; use Hash::Rename; use Test::More tests => 6; use Test::Exception; sub test_rename { my %args = @_; my %hash = ( '-noforce' => 1, scheme => 'http' ); hash_rename %hash, %args; wantarray ? %hash : \%hash; } is_deeply( scalar(test_rename(prepend => '-')), { '--noforce' => 1, '-scheme' => 'http' }, 'prepend dash', ); is_deeply( scalar(test_rename(append => '=')), { '-noforce=' => 1, 'scheme=' => 'http' }, 'append equal sign', ); is_deeply( scalar(test_rename(prepend => '-', append => '=')), { '--noforce=' => 1, '-scheme=' => 'http' }, 'prepend and append', ); is_deeply( scalar(test_rename(code => sub { s/^(?!-)/-/ })), { '-noforce' => 1, '-scheme' => 'http' }, 'code', ); is_deeply( scalar(test_rename(code => sub { $_ = 'foo' })), { foo => 'http' }, 'code producing duplicates, no strict', ); throws_ok { is_deeply( scalar(test_rename(strict => 1, code => sub { $_ = 'foo' })), { foo => 'http' }, 'code producing duplicates, no strict', ); } qr/duplicate result key \[foo\] from original key \[scheme\]/, 'code producing duplicates, with strict',