#!/usr/bin/perl my $table = $ARGV[0] eq 'table' ? '1' : '0'; while() { chop; $words{$_} = ''; $know_about{$_} = 1; } sub valid_entry ( $ ){local $_ = $_[0]; /^[A-Za-z\']+$/ && exists $words{$_}} foreach my $f (qw(working/variant_1.lst working/variant_2.lst working/variant_3.lst working/british_variant_1.lst working/british_variant_2.lst working/canadian_variant_1.lst working/canadian_variant_2.lst working/australian_variant_1.lst working/australian_variant_2.lst working/american.lst working/british.lst working/british_z.lst working/canadian.lst working/australian.lst)) { open F, $f or die "Unable to open $f\n"; while () { chop; $know_about{$_} = 1; } } if (not $table) { open F, "r/varcon/voc.tab" or die; while () { s/\(.+\)\n/\n/; my ($word) = grep {valid_entry $_} (split /[,\t\n]/); next unless defined $word; y/,\t -/\n/; s/(^|\n)\n/\n/g; $words{$word} .= $_; } } open F, "r/varcon/variant.tab" or die; while () { @w = grep {$know_about{$_}} (split /[\t\n]/); next unless @w && grep {valid_entry $_} @w; $words{$w[0]} .= "$_\n" foreach @w; } open F, "r/varcon/variant-wroot.tab" or die; while () { s/^(.+)\:\t// or die; my $root = $1; next unless exists $words{$root}; @w = grep {$know_about{$_}} (split /[\t\n]/); next unless @w && grep {valid_entry $_} @w; $words{$w[0]} .= "$_\n" foreach @w; } if ($table) { while (($key, $value) = each %words) { next if $value eq ''; my $row = "$key\n$value"; chomp $row; $row =~ tr/\n/\t/; print "$row\n"; } } else { while (($key, $value) = each %words) { print "$key\n$value"; } }