package PascalsTriangle; use strict; use warnings; use Exporter qw; our @EXPORT_OK = qw; sub pascal_rows { my ($rows) = @_; my $output = ''; my @triangle = (); return $output unless $rows; return '1' if ( $rows == 1 ); push @triangle => [ 1 ]; foreach my $r ( 2 .. $rows) { my @row = (); foreach my $element ( 1 .. $r ) { my $p1 = $element == 1 ? 0 : $triangle[$r-2][$element-2]; my $p2 = $element == $r ? 0 : $triangle[$r-2][$element-1]; push @row => $p1 + $p2; } push @triangle => \@row; } $output = join( "\n", map { join ' ', @$_ } @triangle ); return $output; } 1;