in reply to Odd and even table rows
my @classes = qw( odd even ); while (...) { push @classes, my $class = shift @classes; ... }
Here's a collection of alternatives, including those already presented:
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 (...) { ... }
HTML::Template's loop even/odd markers.
nth-child(even) and nth-child(even) CSS 3 pseudo-classes.
All code snippets tested except the one using Tie::Cycle.
Update: Added wind's solutions.
|
|---|