#! /usr/bin/perl use strict; use warnings; use Data::Dumper; $Data::Dumper::Indent = 2; my $abstract = q{ Perl is a high-level, general-purpose, interpreted, dynamic programming language. }; my @words = split(q{ }, $abstract); my %phrase_table; my $count = $#words; for my $phrase_length (2..4){ for my $i (0..$count-$phrase_length+1){ push @{$phrase_table{$phrase_length}}, [ @words[$i..$i+$phrase_length-1] ]; } } print Dumper \%phrase_table;