sub pass_by_value { my $value = shift; print $value++, "\n"; } sub pass_by_reference { my $ref = shift; print $$value++, "\n"; } my $x = 0; pass_by_value($x) for ( 1 .. 5 ); pass_by_reference(\$x) for ( 1 .. 5 ); #### foreach my $pair ( [9,5],[0,3],[6,8],[8,3] ) { my ($a, $b) = @$pair; my $min = ($a < $b) ? \$a : \$b; # do whatever with the minimum ... $$min += 2; # changes are then reflected in $a or $b print "$a ; $b\n"; }