The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/env perl

#Format is: singular plural
my $DATA = <<'END_DATA';
alga    algae
alumnus alumni
analysis	analyses
antenna	antennae
antithesis	antitheses
appendix	appendices
axis	axes
bacillus	bacilli
bacterium	bacteria
codex	codices
consortium   consortia
corpus	corpora
crisis	crises
criterion	criteria
curriculum	curricula
datum	data
diagnosis	diagnoses
dogma	dogmata
emphasis	emphases
focus	foci
formula	formulae
fungus	fungi
genus	genera
genie	genii
hypothesis	hypotheses
index	indices
larva	larvae
lemma	lemmata
matrix	matrices
memorandum	memoranda
millennium  millennia
nucleus	nuclei
papilla	papillae
parenthesis	parentheses
phenomenon	phenomena
pneumococcus	pneumococci
pupa	pupae
pylorus	pylori
schema	schemata
spectrum	spectra
stigma	stigmata
stimulus		stimuli
staphylococcus	staphylococci
stratum	strata
streptococcus	streptococci
tempo	tempi
thesaurus	thesauri
thesis	theses
virtuoso	virtuosi
vita	vitae
END_DATA

sub analyze() {		## no critic qw(Subroutines::ProhibitSubroutinePrototypes)
    foreach my $line ( split( "\n", $DATA ) ) {
        next if $line =~ /regular$/;
        my ( $singular, $plural ) = split( /\s+/, $line );
        print "$plural\tNNS\t$singular\n";
    }
    return;
}

sub generate() {	## no critic qw(Subroutines::ProhibitSubroutinePrototypes)
    foreach my $line ( split( "\n", $DATA ) ) {
        next if $line =~ /regular$/;
        print "$line\n";
    }
    return;
}

if    ( $ARGV[0] eq '-a' ) { analyze(); }
elsif ( $ARGV[0] eq '-g' ) { generate(); }
elsif ( $ARGV[0] eq '-d' ) { print $DATA; }
else                       { die "Invalid usage: use option -a, -g or -d\n"; }