0

以下のような2つのファイルがあります。

  1. 住所ファイル [検索ファイル]
POST OFFICE,PO
SUITE ACCESS ROOM, SAR
SUITE,STE
STREET,ST
NEW YORK,NY
POST,PST
LONG LINE STREET,LLS
  1. メインファイル [正確な文字列を検索して置換する必要がある場所]
ARIJIT, 192 POST OFFICE, SUITE
CHANDA, 13 HP STREET, NY
RAM, POSTING POST, LONG LINE STREET
ROY, POST 3009, SUITE ACCESS ROOM

期待される出力:

ARIJIT, 192 PO, STE
CHANDA, 13 HP ST, NEW YORK
RAM, POSTING PST, LLS
ROY, PST 3009, SAR

以下のコードを使用していますが、まだ成功していません。私はPERLで非常に新しいです。コードは単一の単語では正常に機能しますが、複数の単語では機能しません。

#!/usr/bin/perl
use warnings;
use strict;
open( my $out_fh, ">", "output.txt" ) || die "Can't open the output file for writing: $!";

open( my $address_fh, "<", "Address.txt" ) || die "Can't open the address file: $!";
my %lookup = map { chomp; split( /,/, $_, 2 ) } <$address_fh>;

open( my $file_fh, "<", $ARGV[0] ) || die "Can't open the file.txt file: $!";
while (<$file_fh>) {
    my @line = split;
    for my $char ( @line ) {
        ( exists $lookup{$char} ) ? print $out_fh "$lookup{$char} " : print $out_fh "$char ";
    }
    print $out_fh "\n";
}
4

1 に答える 1