#!/usr/bin/perl use strict; our $cond = 1; our $condDone = 0; our %args; for ( my $i = 0 ; $i < @ARGV ; $i += 2 ) { $args{ $ARGV[$i] } = ( $ARGV[ $i + 1 ] and $ARGV[ $i + 1 ] ne 'no' ) ? 1 : 0; } while () { if (m#//if:(\w+)#) { $cond = $args{$1}; $condDone = $cond; } elsif (m#//elsif:(\w+)#) { if ($condDone) { $cond = 0; } else { $cond = $args{$1}; $condDone ||= $cond; } } elsif (m#//else#) { $cond = !$condDone; } elsif (m#//endif#) { $cond = 1; } else { print if ($cond); } }