#!/usr/bin/perl -w use strict; foreach (1..15) { print fibonacci($_), " "; } # prints: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 sub fibonacci { my $number = shift; my $cur_num = 1; my $prev_num = 1; my $sum; return 1 if ($number == 1 || $number == 2); # to get Op's output, supress the above by this: # return "" if ($number == 1 || $number == 2); # or of course just start the sequence at a different number $number -= 2; while ($number--) { $sum = $cur_num + $prev_num; $prev_num = $cur_num; $cur_num = $sum; } return $sum; }