#!/usr/bin/perl use utf8; print "Reading from file: $ARGV[$i] , writing to file $ARGV[$i+1]\n"; for ($i=0;$i<$#ARGV;$i++) { if ($ARGV[$i] =~ m/^-/) { $ARGV[$i] =~s/^-//g; ${$ARGV[$i]}=1; } else { open IN, $ARGV[$i] or die "Unable to read $ARGV[$i]\n"; open OUT, ">".$ARGV[$i+1] or die "Unable to create $ARGV[$i+1]\n"; last; }} binmode IN, utf8; binmode OUT, utf8; sub grave2aigu { my $in=shift; $in=~tr/ἂἃἊἋἒἓἚἛἢἣἪἫἲἳἺἻὂὃὊὋὒὓὢὣὬὭὰὲὴὶὸὺὼᾂᾃᾊᾋᾒᾓᾚᾛᾢᾣᾬᾭᾲῂῒῢῲ/ἄἅἌἍἔἕἜἝἤἥἬἭἴἵἼἽὄὅὌὍὔὕὤὥὪὫάέήίόύώᾄᾅᾌᾍᾔᾕᾜᾝᾤᾥᾪᾫᾴῄΐΰῴ/; return $in; } sub aigu2grave { my $in=shift; $in=~tr/ἄἅἌἍἔἕἜἝἤἥἬἭἴἵἼἽὄὅὌὍὔὕὤὥὪὫάέήίόύώᾄᾅᾌᾍᾔᾕᾜᾝᾤᾥᾪᾫᾴῄΐΰῴ/ἂἃἊἋἒἓἚἛἢἣἪἫἲἳἺἻὂὃὊὋὒὓὢὣὬὭὰὲὴὶὸὺὼᾂᾃᾊᾋᾒᾓᾚᾛᾢᾣᾬᾭᾲῂῒῢῲ/; return $in; } sub nettoyer_graves { my $in=shift; if ($in =~ m/([ἂἃἊἋἒἓἚἛἢἣἪἫἲἳἺἻὂὃὊὋὒὓὢὣὬὭὰὲὴὶὸὺὼᾂᾃᾊᾋᾒᾓᾚᾛᾢᾣᾬᾭᾲῂῒῢῲ])([βγδζθκλμνξπρστφχψ]*[αεηιουω]+)/) { $in =~ s/([ἂἃἊἋἒἓἚἛἢἣἪἫἲἳἺἻὂὃὊὋὒὓὢὣὬὭὰὲὴὶὸὺὼᾂᾃᾊᾋᾒᾓᾚᾛᾢᾣᾬᾭᾲῂῒῢῲ])([βγδζθκλμνξπρστφχψ]*[αεηιουω]+)/&grave2aigu($1).$2/e; } if ($in =~ m/[ἄἅἌἍἔἕἜἝἤἥἬἭἴἵἼἽὄὅὌὍὔὕὤὥὪὫάέήίόύώᾄᾅᾌᾍᾔᾕᾜᾝᾤᾥᾪᾫᾴῄΐΰῴ][βγδζθκλμνξπρσςτφχψ]*$/) { $in =~ s/([ἄἅἌἍἔἕἜἝἤἥἬἭἴἵἼἽὄὅὌὍὔὕὤὥὪὫάέήίόύώᾄᾅᾌᾍᾔᾕᾜᾝᾤᾥᾪᾫᾴῄΐΰῴ])([βγδζθκλμνξπρσςτφχψ]*)$/&aigu2grave($1).$2/e; } return $in; } sub oxeia_stin_ligousa { my $in=shift; if ($in =~ m/[ἂἃἊἋἒἓἚἛἢἣἪἫἲἳἺἻὂὃὊὋὒὓὢὣὬὭὰὲὴὶὸὺὼᾂᾃᾊᾋᾒᾓᾚᾛᾢᾣᾬᾭᾲῂῒῢῲ][βγδζθκλμνξπρσςτφχψ]*$/) { $in =~ s/([ἂἃἊἋἒἓἚἛἢἣἪἫἲἳἺἻὂὃὊὋὒὓὢὣὬὭὰὲὴὶὸὺὼᾂᾃᾊᾋᾒᾓᾚᾛᾢᾣᾬᾭᾲῂῒῢῲ])([βγδζθκλμνξπρσςτφχψ]*)$/&grave2aigu($1).$2/e; } return $in; } while () { tr/\x{00B5}\x{1F71}\x{1F73}\x{1F75}\x{1F77}\x{1F79}\x{1F7B}\x{1F7D}\x{1FD3}\x{1FE3}/μάέήίόύώΐΰ/; s/᾿Α/Ἀ/g; s/᾿Ε/Ἐ/g; s/᾿Η/Ἠ/g; s/᾿Ι/Ἰ/g; s/᾿Ο/Ὀ/g; s/᾿Υ/Υ̓/g; s/᾿Ω/Ὠ/g; s/῾Α/Ἁ/g; s/῾Ε/Ἑ/g; s/῾Η/Ἡ/g; s/῾Ι/Ἱ/g; s/῾Ο/Ὁ/g; s/῾Υ/Ὑ/g; s/῾Ω/Ὡ/g; s/῍Α/Ἂ/g; s/῍Ε/Ἒ/g; s/῍Η/Ἢ/g; s/῍Ι/Ἲ/g; s/῍Ο/Ὂ/g; s/῍Υ/Υ̓̀/g; s/῍Ω/Ὢ/g; s/῎Α/Ἄ/g; s/῎Ε/Ἔ/g; s/῎Η/Ἤ/g; s/῎Ι/Ἴ/g; s/῎Ο/Ὄ/g; s/῎Υ/Υ̓́/g; s/῎Ω/Ὤ/g; s/῝Α/Ἃ/g; s/῝Ε/Ἒ/g; s/῝Η/Ἣ/g; s/῝Ι/Ἳ/g; s/῝Ο/Ὃ/g; s/῝Υ/Ὓ/g; s/῝Ω/Ὣ/g; s/῞Α/Ἅ/g; s/῞Ε/Ἕ/g; s/῞Η/Ἥ/g; s/῞Ι/Ἵ/g; s/῞Ο/Ὅ/g; s/῞Υ/Ὕ/g; s/῞Ω/Ὥ/g; s/῏Α/Ἆ/g; s/῏Ε/Ἐ͂/g; s/῏Η/Ἦ/g; s/῏Ι/Ἶ/g; s/῏Ο/Ὀ͂/g; s/῏Υ/Υ̓͂/g; s/῏Ω/Ὦ/g; s/῟Α/Ἇ/g; s/῟Ε/Ἑ͂/g; s/῟Η/Ἧ/g; s/῟Ι/Ἷ/g; s/῟Ο/Ὁ͂/g; s/῟Υ/Ὗ/g; s/῟Ω/Ὧ/g; s/᾿ᾼ/ᾈ/g; s/᾿ῌ/ᾘ/g; s/᾿ῼ/ᾨ/g; s/῾ᾼ/ᾉ/g; s/῾ῌ/ᾙ/g; s/῾ῼ/ᾩ/g; s/῍ᾼ/ᾊ/g; s/῍ῌ/ᾚ/g; s/῍ῼ/ᾪ/g; s/῎ᾼ/ᾌ/g; s/῎ῌ/ᾜ/g; s/῎ῼ/ᾬ/g; s/῝ᾼ/ᾋ/g; s/῝ῌ/ᾛ/g; s/῝ῼ/ᾫ/g; s/῞ᾼ/ᾍ/g; s/῞ῌ/ᾝ/g; s/῞ῼ/ᾭ/g; s/῏ᾼ/ᾎ/g; s/῏ῌ/ᾞ/g; s/῏ῼ/ᾮ/g; s/῟ᾼ/ᾏ/g; s/῟ῌ/ᾟ/g; s/῟ῼ/ᾯ/g; @par=split(/([^ΐ-ώἀ-῾]+)/,$_); $assemblage=""; foreach $i (0 .. $#par) { if ($onlyperipheral!=1) { $par[$i]=&nettoyer_graves($par[$i]); if ($i<$#par and ($par[$i+1] =~ m/^[.,:;!?·]/ or $par[$i+1] =~ m/^[»][.,:!?·]/ or $par[$i+2] =~ m/^([Μμ]ου|[Σσ]ου|[Ττ]ου|της|μας|σας|τους|των|[Μμ]ε|[Σσ]ε|[Ττ]ε|τες|[Μμ]οι|[Σσ]οι|[Ττ]ον|το|ἐστι|ἐστιν|περ|τινος)$/)) { $par[$i]=&oxeia_stin_ligousa($par[$i]); } $par[$i]=~s/^([Ππ])οιὸς$/\1οιός/; $par[$i]=~s/^([Ππ])οιὸν$/\1οιόν/; $par[$i]=~s/^([Ππ])οιοὶ$/\1οιοί/; $par[$i]=~s/^([Ππ])οιοὺς$/\1οιούς/; $par[$i]=~s/^([Ππ])οιὲς$/\1οιές/; $par[$i]=~s/^([Ππ])οιὰ$/\1οιά/; $par[$i]=~s/^([Ππ])οιὰν$/\1οιάν/; $par[$i]=~s/^([Ππ])οιὸ$/\1οιό/; $par[$i]=~s/^([Ττ])ὶ$/\1ί/; $par[$i]=~s/^([Γγ]ιατ)[ὶί]$/\1ί•••/; $par[$i]=~s/^([Νν])[ὰά]$/\1ὰ•••/; } if ($rhoplus==1) { if (not ($par[$i] =~ m/^[Α-Ω]+$/)) { $par[$i]=~s/^Ρ/Ῥ/; } $par[$i]=~s/^ρ/ῥ/; } if ($rhominus==1) { $par[$i]=~s/Ῥ/Ρ/; $par[$i]=~s/ῥ/ρ/; } if ($rhorhoplus==1) { $par[$i]=~s/ρρ/ῤῥ/; } if ($rhorhominus==1) { $par[$i]=~s/ῤῥ/ρρ/; } if ($subscriptminus==1) { $par[$i]=~tr/ᾀᾁᾂᾃᾄᾅᾆᾇᾈᾉᾊᾋᾌᾍᾎᾏᾐᾑᾒᾓᾔᾕᾖᾗᾘᾙᾚᾛᾜᾝᾞᾟᾠᾡᾢᾣᾤᾥᾦᾧᾨᾩᾪᾫᾬᾭᾮᾯᾲᾳᾴᾷᾼῂῃῄῇῌῲῳῴῷῼ/ἀἁἂἃἄἅἆἇἈἉἊἋἌἍἎἏἠἡἢἣἤἥἦἧἨἩἪἫἬἭἮἯὠὡὢὣὤὥὦὧὨὩὪὫὬὭὮὯὰαάᾶΑὴηήῆΗὼωώῶΩ/; } $assemblage.=$par[$i]; } if ($onlyperipheral!=1) { $assemblage =~ s/([Νν])ὰ•••([.,:;!·])/\1ά\2/g; } print OUT $assemblage; } close(IN); close(OUT);