my @classes = qw( odd even ); while (...) { push @classes, my $class = shift @classes; ... } #### my $odd; while (...) { my $class = ($odd++ % 2 == 0) ? 'odd' : 'even'; ... } #### my $odd; while (...) { my $class = $odd++ % 2 ? 'even' : 'odd'; ... } #### my $odd; while (...) { my $class = $odd ^= 1 ? 'odd' : 'even'; ... } #### my $odd; while (...) { my $class = ('odd','even')[$odd++ % 2]; ... } #### my $odd; while (...) { my $class = ('odd','even')[$odd ^= 1]; ... } #### my $class = 'even'; while (...) { $class = ($class eq 'odd') ? 'even' : 'odd'; ... } #### my @classes = qw( odd even ); while (...) { push @classes, my $class = shift @classes; ... } #### my $class = 'even'; while (...) { ($class) = grep $_ ne $class, qw( odd even ); ... } #### my ($class, %flip_class) = qw( even odd even even odd ); while (...) { $class = $flip_class{$class}; ... } #### my ($class, %flip_class) = qw( odd even )[1,1,0,0,1]; while (...) { $class = $flip_class{$class}; ... } #### use Tie::Cycle qw( ); tie my $class, 'Tie::Cycle', [ qw( odd even ) ]; while (...) { ... }