次のようなファイルがあります
名前|ジョン|東京|日本語 年齢|32|男 INFO|SINGLE|PROFESSIONAL|IT 名前|マーク|マニラ|PH 年齢|37|男 情報|既婚者|プロフェッショナル|BPO 名前|サマンサ|シドニー|オーストラリア 年齢|37|女 情報|既婚者|プロ|オフショア 名前|ルーク|東京|日本語 年齢|27|男 INFO|SINGLE|PROFESSIONAL|IT
記録を国別に分けたい。各行を配列変数に格納しました@fields
my @fields = split(/\|/, $_ );
$fields[3]
それを分類するための私の基礎として作っています。2つの出力テキストファイルに分けたかった
出力テキスト ファイル 1:
NAME|JOHN|TOKYO|JPN
AGE|32|M
INFO|SINGLE|PROFESSIONAL|IT
NAME|LUKE|TOKYO|JPN
AGE|27|M
INFO|SINGLE|PROFESSIONAL|IT
出力テキストファイル 2
NAME|MARK|MANILA|PH
AGE|37|M
INFO|MARRIED|PROFESSIONAL|BPO
NAME|SAMANTHA|SYDNEY|AUS
AGE|37|F
INFO|MARRIED|PROFESSIONAL|OFFSHORE
JPN からのすべてを出力テキスト 1 に、非 JPN の国から出力テキスト ファイル 2 に入れる
これが、解決しようとしているコードです
use strict;
use warnings;
use Data::Dumper;
use Carp qw(croak);
my @fields;
my $tmp_var;
my $count;
;
my ($line, $i);
my $filename = 'data.txt';
open(my $input_fh, '<', $filename ) or croak "Can't open $filename: $!";
open(OUTPUTA, ">", 'JPN.txt') or die "wsl_reformat.pl: could not open $ARGV[0]";
open(OUTPUTB, ">", 'Non-JPN.txt') or die "wsl_reformat.pl: could not open $ARGV[0]";
my $fh;
while (<$input_fh>) {
chomp;
my @fields = split /\|/;
if ($fields[0] eq 'NAME') {
for ($i=1; $i < @fields; $i++) {
if ($fields[3] eq 'JPN') {
$fh = $_;
print OUTPUTA $fh;
}
else {
$fh = $_;
print OUTPUTB $fh;
}
}
}
}
close(OUTPUTA);
close(OUTPUTB)
まだ運がありません:(