分隔我有一個看起來像提取的記錄特定多行被管在Perl
NAME|JOHN|TOKYO|JPN AGE|32|M INFO|SINGLE|PROFESSIONAL|IT NAME|MARK|MANILA|PH AGE|37|M INFO|MARRIED|PROFESSIONAL|BPO NAME|SAMANTHA|SYDNEY|AUS AGE|37|F INFO|MARRIED|PROFESSIONAL|OFFSHORE NAME|LUKE|TOKYO|JPN AGE|27|M 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)
仍然沒有運氣就可以了:(
對不起,我還需要15次我就可以投票前。 – Soncire 2013-03-21 00:06:17