#!/usr/bin/perl use strict; use warnings; use POSIX qw(locale_h); setlocale(LC_CTYPE, "pt_PT"); use locale; my %expand = load_expansions(); $/ = "\n\$\n"; my $line; while (defined($line = <>)) { chomp $line; for my $contraction (keys %expand) { $line =~ s{(-|\b)(\w+)\b}{ $1.((exists($expand{lc($2)}))?join(" ",@{$expand{lc($2)}}):$2) }ge; } print $line; print $/; } sub load_expansions { return ( 'à' => ['a','a'], 'ao' => ['a','o'], 'aos' => ['a','os'], 'àquela' => ['a','aquela'], 'àquelas' => ['a','aquelas'], 'àquele' => ['a','aquele'], 'àqueles' => ['a','aqueles'], 'àquilo' => ['a','aquilo'], 'às' => ['a','as'], 'comigo' => ['com','mim'], 'connosco' => ['com','nós'], 'consigo' => ['com','você'], 'contigo' => ['com','ti'], 'convosco' => ['com','vós'], 'daí' => ['de','aí'], 'dalém' => ['de','além'], 'dalgo' => ['de','algo'], 'dalguém' => ['de','alguém'], 'dalgum' => ['de','algum'], 'dalguns' => ['de','alguns'], 'dalgures' => ['de','algures'], 'dali' => ['de','ali'], 'daquela' => ['de','aquela'], 'daquelas' => ['de','aquelas'], 'daquele' => ['de','aquele'], 'daqueles' => ['de','aqueles'], 'daquém' => ['de','aquém'], 'daqui' => ['de','aqui'], 'daquilo' => ['de','aquilo'], 'dela' => ['de','ela'], 'delas' => ['de','elas'], 'dele' => ['de','ele'], 'deles' => ['de','eles'], 'dentre' => ['de','entre'], 'dessa' => ['de','essa'], 'dessas' => ['de','essas'], 'desse' => ['de','esse'], 'desses' => ['de','esses'], 'desta' => ['de','esta'], 'destas' => ['de','estas'], 'deste' => ['de','este'], 'destes' => ['de','estes'], 'disso' => ['de','isso'], 'disto' => ['de','isto'], 'da' => ['de','a'], 'das' => ['de','as'], 'do' => ['de','o'], 'dos' => ['de','os'], 'donde' => ['de','onde'], 'doutrem' => ['de','outrem'], 'doutra' => ['de','outra'], 'doutras' => ['de','outras'], 'doutro' => ['de','outro'], 'doutros' => ['de','outros'], 'doutrora' => ['de','outrora'], 'dum' => ['de','um'], 'duns' => ['de','uns'], 'essoutra' => ['esse','outra'], 'essoutras'=> ['esse','outras'], 'essoutro' => ['esse','outro'], 'essoutros'=> ['esse','outros'], 'estoutra' => ['este','outra'], 'estoutras'=> ['este','outras'], 'estoutro' => ['este','outro'], 'estoutros'=> ['este','outros'], 'há-de' => ['há','de'], 'hão-de' => ['hão','de'], 'lha' => ['lhe','a'], 'lhas' => ['lhe','as'], 'lho' => ['lhe','o'], 'lhos' => ['lhe','os'], 'ma' => ['me','a'], 'mo' => ['me','o'], 'nalgum' => ['em','algum'], 'nalguns' => ['em','alguns'], 'nalguma' => ['em','alguma'], 'nalgumas' => ['em','algumas'], 'naquele' => ['em','aquele'], 'naqueles' => ['em','aqueles'], 'naquela' => ['em','aquela'], 'naquelas' => ['em','aquelas'], 'naqueloutro' => ['em','aquele','outro'], 'naqueloutros'=> ['em','aqueles','outros'], 'naqueloutra' => ['em','aquela','outra'], 'naqueloutras'=> ['em','aquelas','outras'], 'naquilo' => ['em','aquilo'], 'nele' => ['em','ele'], 'neles' => ['em','eles'], 'nela' => ['em','ela'], 'nelas' => ['em','elas'], 'nesse' => ['em','esse'], 'nesses' => ['em','esses'], 'nessa' => ['em','essa'], 'nessas' => ['em','essas'], 'nesta' => ['em','esta'], 'nestas' => ['em','estas'], 'neste' => ['em','este'], 'nestes' => ['em','estes'], 'nisso' => ['em','isso'], 'nisto' => ['em','isto'], 'na' => ['em','a'], 'nas' => ['em','as'], 'no' => ['em','o'], 'nos' => ['em','os'], 'noutra' => ['em','outra'], 'noutras' => ['em','outras'], 'noutro' => ['em','outro'], 'noutros' => ['em','outros'], 'num' => ['em','um'], 'nuns' => ['em','uns'], 'numa' => ['em','uma'], 'numas' => ['em','umas'], 'pelo' => ['por','o'], 'pelos' => ['por','os'], 'pela' => ['por','a'], 'pelas' => ['por','as'], 'to' => ['te','o'] ); }