in reply to Help Improve/troubleshoot Simple Lexicon Perl Code

I used the following lexicon:
d the a quick a brown n fox v jumps p over d the a lazy n dog

And the following input:

the quick brown fox jumps over the lazy dog

Running the following script with these two files as arguments

#!/usr/bin/perl use warnings; use strict; use feature qw{ say }; my ($lexicon, $input) = @ARGV; my %emotive; open my $lex, '<', $lexicon or die $!; while (<$lex>) { my ($pos, $lemma) = split; warn "Duplicate POS for $lemma.\n" if exists $emotive{$lemma} && $emotive{$lemma} ne $pos; $emotive{$lemma} = $pos; } my %seen; open my $in, '<', $input or die $!; while (<$in>) { $seen{$_}++ for map $emotive{$_}, split; } for my $pos (sort { $seen{$a} <=> $seen{$b} } keys %seen) { say "$pos\t$seen{$pos}"; }

the output is

p 1 v 1 n 2 d 2 a 3

map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]