--- /dev/null
+#!perl
+
+use strict;
+use warnings;
+
+use Variable::Temp 'temp';
+
+use Test::More tests => 10;
+
+{
+ package Variable::Temp::TestPkg;
+
+ sub new {
+ my ($class, $val) = @_;
+
+ bless { value => $val }, $class;
+ }
+
+ sub value :lvalue {
+ $_[0]->{value}
+ }
+
+ sub is_value {
+ my ($self, $expected, $desc) = @_;
+ ::is($self->{value}, $expected, $desc);
+ }
+}
+
+my $x = Variable::Temp::TestPkg->new(1);
+$x->is_value(1);
+
+{
+ temp $x->value = 2;
+ $x->is_value(2);
+}
+
+$x->is_value(1);
+
+{
+ temp $x->value = 3;
+ $x->is_value(3);
+
+ temp $x->value = 4;
+ $x->is_value(4);
+}
+
+$x->is_value(1);
+
+{
+ temp $x->value = 5;
+ $x->is_value(5);
+
+ {
+ temp $x->value = 6;
+ $x->is_value(6);
+ }
+
+ $x->is_value(5);
+}
+
+$x->is_value(1);