Perl だと Morichan さんが諸々書いていますね!
自分が書いたのは tie を使ったパターン
package Incr;
require Tie::Scalar;
@ISA = qw(Tie::StdScalar);
sub FETCH { ++$$_[0] }
package main;
use Test::More tests => 1;
tie my $a, Incr, 1;
ok $a == 1 && $a == 2 && $a == 3;
Stackoverflow にあった回答に近い雰囲気かな