perl - 如何在 Perl 中从单个源生成两个文件?

标签 perl

这是 similiar question .我有这个 Source File,我想把 Blue 记录放在 blue.outGreen 记录在 green.out。我从这里去哪里?

Blue 1-3
a
b
Green 1-3
d
e
Blue 4-6
i
j
Blue 7-9
m
n
Green 4-6
p
q
Green 7-9
s
t

所需输出两个文件 blue.outgreen.out

blue.out           green.out
------------------------------
a                  d   
b                  e   
i                  p
j                  q
m                  s
n                  t

这是我的代码

use strict;
use warnings; 
my $blue = 'Blue';
my $green= 'Green';

while (<>) {
    if (/$blue/) {
        open(BLUEOUT,">>blue.out");
    print BLUEOUT $_ ;
}
    if (/$green/) {
        open(GREENOUT,">>green.out");
    print GREENOUT $_ ;
}
}

最佳答案

open my $blue,  ">", "blue.out"  or die "could not open output file blue.out: $?";
open my $green, ">", "green.out" or die "could not open output file green.out: $?";

my $curr = undef;

while (<>) 
{
    if (/Blue/)  { $curr = $blue;  next; }
    if (/Green/) { $curr = $green; next; }
    print $curr $_ if defined $curr;
}

close $blue;
close $green;

关于perl - 如何在 Perl 中从单个源生成两个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20715381/

相关文章:

perl - 安装 bugzilla 时出错 - 您必须安装 Linux::Pid

perl - 为什么我需要显式引用属性才能修改它而不是使用引用?

multithreading - Perl:从后台线程关闭 open2 句柄

perl - LWP::UserAgent - 确定响应代码的来源 - PERL 模块

perl - readline() 在关闭的文件句柄上

regex - Perl,在由未知字符分隔的同一行中多次匹配一个模式

regex - 如何使用 m!在 Perl 正则表达式中

perl - 比较 2 个数组并删除匹配项

perl - 如何动态获取模块的路径?

perl - PDF::API2 无法写入第 2 页