use warnings; use strict; sub divmod { my $m = abs($_[1]); my $a = $_[0] % $m; my($b, $x, $y, $n) = ($m, 1, 0); while (0 != $a) { $n = int($b / $a); ($a, $b, $x, $y) = ($b - $n * $a, $a, $y - $n * $x, $x); } $y % $m; }