Unicode-Tussle

 view release on metacpan or  search on metacpan

script/vowel-sigs  view on Meta::CPAN

#!/usr/bin/env perl

use v5.12;

sub maxlen   (@    );
sub seqcount ( $ _ );
sub cvmap    ( _   );
sub cvlen  ( _   );
sub as_CV  ( _   );
sub nsyl  ( _   );

use constant MANY => 8;

our $RX_Subs;
our ($V, $C, $VC, $CV);

UNITCHECK { 
    init_subs(); 
}

$| = 1;

use Lingua::EN::Syllable;

@ARGV = "/usr/share/dict/words" if !@ARGV && -t;

main();
exit;

sub main {
    while (<>) {
	#next unless /y/i;
	chomp;
	my $my_count  = nsyl;
	my $his_count = syllable($_);
	next if $my_count == $his_count;
	printf "%d %d %s %s\n", $my_count, $his_count, $_, as_CV;
    } 
}

sub nsyl(_) {
    my $cv = as_CV(shift);
    # $cv =~ s/VV/V/g;
    return $cv =~ y/V//;
} 

sub as_CV(_) {
    local $_ = lc shift;
    s/[gq]ue(?=$|$C)/k/g;
    s/qu/qw/g;
    s/(\p{IsConsonant})\1\Kle$/el/;
    s/[ai]\Kble/bel/;
    s/ble$/bel/;
    s/ive(?=ly|ness)$/iv/;
    s/$C\Kre$/er/;
    # s/$C\Ked$/d/;
    s/ism$/isum/;
    s/$V$C+\Ke$//;
    s/[xtcs]i\K[ao]([ln])/$1/g;
    s/eye/ee/g;
    s/$C\Kle(?:ness)?$/el/;
    s/$V\Ky(?=$V)/C/g;
    s/(?=$C)y(?=[ao])/V/g;
    s/$C\Ky(?=$C)/V/g;
    s/$C\Ky$/V/g;
    s/$C\Ky/C/g;
    s/$V\Ky/V/g;
    s/$C/C/g;
    s/$V/V/g;
    return $_;
} 

sub main2 {

    while (<>) { 
	chomp;



( run in 2.917 seconds using v1.01-cache-2.11-cpan-5837b0d9d2c )