##
#! /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;
##
##
$VAR1 = {
'4' => [
[
'Perl',
'is',
'a',
'high-level,'
],
[
'is',
'a',
'high-level,',
'general-purpose,'
],
[
'a',
'high-level,',
'general-purpose,',
'interpreted,'
],
[
'high-level,',
'general-purpose,',
'interpreted,',
'dynamic'
],
[
'general-purpose,',
'interpreted,',
'dynamic',
'programming'
],
[
'interpreted,',
'dynamic',
'programming',
'language.'
]
],
'3' => [
[
'Perl',
'is',
'a'
],
[
'is',
'a',
'high-level,'
],
[
'a',
'high-level,',
'general-purpose,'
],
[
'high-level,',
'general-purpose,',
'interpreted,'
],
[
'general-purpose,',
'interpreted,',
'dynamic'
],
[
'interpreted,',
'dynamic',
'programming'
],
[
'dynamic',
'programming',
'language.'
]
],
'2' => [
[
'Perl',
'is'
],
[
'is',
'a'
],
[
'a',
'high-level,'
],
[
'high-level,',
'general-purpose,'
],
[
'general-purpose,',
'interpreted,'
],
[
'interpreted,',
'dynamic'
],
[
'dynamic',
'programming'
],
[
'programming',
'language.'
]
]
};