52 lines
1.2 KiB
Perl
52 lines
1.2 KiB
Perl
#!/usr/bin/perl
|
|
# Translate words in file(s) given on command-line. Saves older as .bak
|
|
# The dictionary is read as 2 files, french.txt and english.txt
|
|
# Method: regexp search, ^word then ^non-word then ^word then ...
|
|
# Each word is translated according to a hash dictionary
|
|
|
|
# Released to public domain.
|
|
|
|
unless ( open (FRENCH, "french.txt")) {
|
|
die "Impossible to open 'french.txt' file.\n";
|
|
}
|
|
unless ( open (ENGLISH, "english.txt")) {
|
|
die "Impossible to open 'english.txt' file.\n";
|
|
}
|
|
|
|
# Build french->english dictionary (a hash)
|
|
while(($french = <FRENCH>) & ($english=<ENGLISH>)){
|
|
chop($french);
|
|
chop($english);
|
|
if ("$french" ne "$english")
|
|
{
|
|
$dictionary{$french} = $english;
|
|
}
|
|
}
|
|
|
|
#foreach $name (@ARGV) {
|
|
#print "$name";
|
|
|
|
$^I = ".bak";
|
|
# Read input
|
|
while ($line = <>){
|
|
chop $line;
|
|
while ($line ne "") {
|
|
# word
|
|
if ($line =~ m/^(\w+)(.*)$/) {
|
|
if (defined $dictionary{$1}) {
|
|
print $dictionary{$1};
|
|
}
|
|
else {
|
|
print "$1";
|
|
}
|
|
$line=$2;
|
|
}
|
|
# non-word
|
|
if ($line =~ m/^([^\w]+)(.*)$/) {
|
|
print "$1";
|
|
$line=$2;
|
|
}
|
|
}
|
|
print "\n";
|
|
}
|
|
#} |