#!/usr/bin/perl -w #Compute pi. Based on Leibniz's algorithm that # pi = 4 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11... use strict; my $pi = 4; my $next_digits = get_leibniz(); for ( 1 .. 100000 ) { my ( $subtract, $add ) = &$next_digits; $pi = $pi - $subtract + $add; } print $pi; sub get_leibniz { my $index = 1; my $sub = sub { $index += 2; my $first = 4/$index; $index += 2; my $second = 4/$index; return ($first, $second); }; return $sub; } #### $p=4;$n=l();for(1..100000){($s,$a)=&$n;$p=$p-$s+$a}print$p; sub l{$i=1;sub{$i+=2;$f=4/$i;$i+=2;$q=4/$i;($f,$q)}}