in reply to Ternary operators

Note that it's called the conditional operator. It's merely one of a few ternary operators.

If you wanted to use the conditional operator, it would look like the following:

$broken->{this} = $_ eq 'this' ? 1 : $broken->{this}; $broken->{that} = $_ eq 'that' ? 1 : $broken->{that}; $broken->{another} = $_ eq 'another' ? 1 : $broken->{another};

But that would be silly.

You want

$broken->{$_} = 1 for @list;

or

my @valid = qw( this that another ); $broken->{$_} = 0 for @valid; $broken->{$_} = 1 for @list;

or

my %valid = map { $_ => 1 } qw( this that another ); $broken->{$_} = 1 for grep $valid{$_}, @list;

or

my @valid = qw( this that another ); my %valid = map { $_ => 1 } @valid; $broken->{$_} = 0 for @valid; $broken->{$_} = 1 for grep $valid{$_}, @list;