#!/usr/bin/perl -w use strict; use POSIX; our %want; our $nknives = 3; our @part_order = qw(h b l); my $want = shift @ARGV; my ($wknife,$wparts) = $want =~ m/^(\d)([a-z]+)$/ or die; sub want ($) { my ($colournum) = @_; my $knife = $nknives-1 - ($colournum-1) % $nknives; return 0 unless $knife == $wknife; my $part = $part_order[ floor(($colournum-1) / $nknives) ]; die "huh colour $colournum?" unless defined $part; return 0 unless $part =~ m/[$wparts]/o; print STDERR "$0: including colour $colournum ($knife $part)\n"; return 1; } our $drop; while (<>) { if (m/^\S/) { $drop = m/^2 5 / || (m/^(?:3 1|2 3) \d+ \d+ (\d+) / && !want($1)); } next if $drop; print or die $!; }