use strict; use warnings; use 5.012; use Data::Dumper; my @file1 = ( 'this is an example.', 'the example is just for display.', 'how to solve it in an efficient way?', ); my @file2 = ( 'este es un ejemplo.', 'el ejemplo es sólo para mostrar.', 'cómo resolverlo de una manera eficiente?', ); say Dumper(parse(@file1)); say Dumper(parse(@file2)); sub parse { my @sentences = @_; my %words_catalogue; my $line = 1; for my $sentence (@sentences) { my @words = split ' ', $sentence; $words_catalogue{$_}{$line}++ for @words; $line++; } return \%words_catalogue; }