早上处理的,题主实际资料要多一些,改动不大。- use Encode;
- use File::Slurp;
- my @text = read_file("src.txt");
-
- my %main;
- my $ref;
- my @order;
- my %item;
- for my $e ( @text )
- {
- $e=~s/\r?\n$//;
- if ( $e =~/^\[/ ) {
- $main{$e} = {};
- push @order, $e;
- $ref = $main{$e};
- } else {
- if ($e =~ /^(.*)=/) { # 可能有空白项
- $item{$1} = 1;
- $ref->{$1} = $e;
- }
- }
- }
-
- # 按 item 处理
- for my $type ( keys %item ) {
- my $fname = $type .".txt";
- my $buff = "";
- for my $name ( @order )
- {
- next unless (exists $main{$name}->{$type});
- $buff .= $name ."\r\n". $main{$name}->{$type} ."\r\n";
- }
- write_file( $fname, {binmode=>":raw"}, $buff );
- }
复制代码 -------------------------------
已支持论坛 10 元 (支付宝)
流水号 20190523200040011100480062006406 |