From: Ian Jackson Date: Sat, 21 Jan 2012 11:44:00 +0000 (+0000) Subject: wip topbloke-merge-lists X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=topbloke.git;a=commitdiff_plain;h=befe127cf99d6cc7006776345c3cb2dc43c3341c wip topbloke-merge-lists --- diff --git a/topbloke-merge-lists b/topbloke-merge-lists index 42737e0..efdd52b 100755 --- a/topbloke-merge-lists +++ b/topbloke-merge-lists @@ -5,7 +5,8 @@ use warnings; use IO::Handle; our %flag; -our @order, @order_final_maybe; +our (@order, @order_final_maybe); +our $verbose=0; while (@ARGV && $ARGV[0] =~ m/^\-/) { $_ = shift @ARGV; @@ -15,6 +16,8 @@ while (@ARGV && $ARGV[0] =~ m/^\-/) { } elsif (s/^-D//) { $flag{$_}{Result} = 1; push @order_final_maybe, $_; + } elsif (m/^-v$/) { + $verbose = 1; } elsif (m/^--$/) { last; } else { @@ -37,9 +40,11 @@ foreach my $ix (qw(0 1 2)) { } foreach $_ (@order_final_maybe) { - push @order, $_ unless $flags{$_}{InOrder}++; + push @order, $_ unless $flag{$_}{InOrder}++; } +my $current = $ARGV[0]; + open O, '>', "$current.tmp" or die "$current.tmp $!"; foreach $_ (@order) { @@ -47,13 +52,16 @@ foreach $_ (@order) { if (!defined $ff->{Result}) { my $s = ''; foreach my $ix (qw(0 1 2)) { - $ff->{Input}[$ix] ||= 1; + $ff->{Input}[$ix] ||= 0; $s .= $ff->{Input}[$ix]; } + if ($verbose) { + print STDERR "MERGE-LISTS $s $_\n" or die $!; + } $ff->{Result} = $s eq '000' ? '000' : $s eq '111' ? '111' : - $ff->{Input}[1]; + !$ff->{Input}[1]; } if ($ff->{Result}) { print O "$_\n" or die $!;