#!/usr/bin/env perl use strict; use warnings; use feature qw(say); my $ts = ; my @flags = (true=> ( =~ /(false|true)/g)); my @header = ( =~ /([a-z_]+)/g); use YAML::XS; print Dump \@header, \@flags; my @selected = grep $flags[ $_ ] eq 'false', 0 .. $#flags; my %output_fh; for my $i (@selected) { my $fname = "file$i"; open my $fh, '>', $fname or die "Cannot open '$fname' for writing: $!"; say $fh $header[$i]; $output_fh{$i} = $fh; } while (my $line = ) { next unless $line =~ /\S/; # next if $line =~ /^false/; my @cols = split qr{ , }x, $line; for my $i (@selected) { say { $output_fh{$i} } join(q{ : }, $cols[0], $cols[$i]); } }