sub swap { my $a = \shift; my $b = \shift; ( $$a, $$b ) = ( $$b, $$a ); }