--- /dev/null
+#!/usr/bin/env perl
+
+use warnings;
+use strict;
+
+use lib 't/lib';
+use TestCommon;
+
+use File::KDBX::Util qw(erase erase_scoped);
+use Test::More;
+
+my $data1 = 'hello';
+my $data2 = 'hello';
+my $hash1 = {foo => 'secret'};
+my $array1 = [qw(bar baz)];
+
+erase $data1, \$data2, $hash1, $array1;
+is $data1, undef, 'Erase by alias';
+is $data2, undef, 'Erase by reference';
+is scalar keys %$hash1, 0, 'Erase by hashref';
+is scalar @$array1, 0, 'Erase by arrayref';
+
+{
+ my $data3 = 'hello';
+ my $cleanup = erase_scoped $data3;
+ is $data3, 'hello', 'Data not yet erased';
+ undef $cleanup;
+ is $data3, undef, 'Scoped erased';
+}
+
+sub get_secret {
+ my $secret = 'conspiracy';
+ my $cleanup = erase_scoped \$secret;
+ return $secret;
+}
+
+my $another;
+{
+ my $thing = get_secret();
+ $another = $thing;
+ is $thing, 'conspiracy', 'Data not yet erased';
+ undef $thing;
+ is $thing, undef, 'Scope erased';
+}
+is $another, 'conspiracy', 'Data not erased in the other scalar';
+
+done_testing;