#!/usr/bin/perl use warnings; use strict; use Data::Dumper; while (<>) { my $term = $_; chomp $term; next unless (length($term)>3); if ($term =~ m/([A-Z]\w+\s+)*([A-Z]\w+)$/) { my @l = split /\s+/, $term; @l = map {substr $_, 0, 1} @l; printf "%s -> %s\n", lc(join('',@l)), $term; next; } my @abbvrs; push @abbvrs, f1($term,3); push @abbvrs, f1($term,4); push @abbvrs, f2($term); foreach (@abbvrs) { printf "%s -> %s\n", lc($_), lc($term); } } sub f1 { my ($term, $n) = @_; return (substr $term, 0, $n); } sub f2 { my ($term) = @_; $term =~ s/[aeiou]+//g; return $term; }