2 つの入力ファイルを持つ Perl スクリプトをプログラムしました。
最初のファイルには、各行にフレーズがあり、次に括弧内に値があります。ここに例があります:
hello all (0.5) hi all (0.63) good bye all (0.09)
2 番目のファイルには、ルールのリストがあります。例えば:
hello all -> salut (0.5) hello all -> salut à tous (0.5) hi all -> salut (0.63) good bye all -> au revoir (0.09) good bye -> au revoir (0.09)
スクリプトは 2 番目のファイルを読み取る必要があり、各行で矢印の前のフレーズを抽出し (たとえば、1 行目: hello all
)、このフレーズが最初のファイルに存在するかどうかを確認します (この例では見つかっています)。
存在する場合は、行全体hello all -> salut (0.5)
を出力に書き込みます。したがって、この例では、出力ファイルは次のようになります。
hello all -> salut (0.5)
hello all -> salut à tous (0.5)
hi all -> > salut (0.63)
good bye all -> au revoir (0.09)
私の考えは、最初のファイルのすべての内容をハッシュ テーブルに入れることです。ここで私のスクリプト:
#!/usr/bin/perl
use warnings;
my $vocabFile = "file1.txt";
my %hashFR =();
open my $fh_infile, '<', $InFile or die "Can't open $InFile\n";
while ( my $Ligne = <$fh_infile> ) {
if ( $Ligne =~ /(/ ) {
my ($cle, $valeur) = split /(/, $Ligne;
say $cle;
$h{$cle} = $valeur;
}
}
私の質問: 矢印の直前の単語のセグメントを抽出し、ハッシュ テーブルで検索するにはどうすればよいですか?
ご協力ありがとうございました