3
を解析するために失敗、私は次のようになり、テキストファイル解析しようとしています:修正幅テキストファイル
aaa aaa111 aaa
bbb bbb222 bbb
ccc ccc333 ccc
ddd ddd444 ddd
私のコード:このような結果を得るために
aaa aaa aaa
111 111 111
bbb bbb bbb
222 222 222
ccc ccc ccc
333 555 666
ddd ddd ddd
444 444 444
を
use strict;
use warnings;
use Data::Dumper;
my @array;
my $flag = "";
my $permit;
my $adrr;
my $descr;
my $str_no;
my $file = 'Permit.txt';
open my $fh, '+<', $file
or die "Cannot open 'file ' for writing: $!";
while (my $line = <$fh>) {
chomp($line);
if ($line =~ /^[abcd]/) {
$str_no = substr($flag,0,3);
$permit = substr($line, 0, 3);
$adrr = substr($line, 4, 3);
$descr = substr($line, 8, 3);
if($flag) {
if ($str_no) {
$adrr .= $str_no;
}
}
push @array, {permi => $permit, adr => $adrr, desc => $descr};
$flag = "";
} else {
$flag = $line;
}
}
print Dumper(\@array);
しかし、これは数字の行からすべての値をプルダウンして、最初の数字を2番目の文字の行に連結します。