switch ( $foo ) { case ( tr/I/I/ == 1 ) { $bar = 'low' } case ( tr/I/I/ == 2 ) { $bar = 'med' } case ( tr/I/I/ == 3 ) { $bar = 'high' } else { warn "Bad $_\n" } } #### Use of uninitialized value $_ in transliteration (tr///) #### #!perl! -w use strict; use Switch; my $foo = 'II'; print $foo =~ tr/I/I/, "\n"; my $bar; switch ( $foo ) { case ( tr/I/I/ == 1 ) { $bar = 'low' } case ( tr/I/I/ == 2 ) { $bar = 'med' } case ( tr/I/I/ == 3 ) { $bar = 'high' } else { $bar = "drat" } } print "Foo: $foo Bar: $bar\n"; # This works: switch ( $foo ) { case ( /I{3}/ ) { $bar = 'high' } case ( /I{2}/ ) { $bar = 'med' } case ( /I/ ) { $bar = 'low' } else { $bar = "drat" } } print "Foo: $foo Bar: $bar\n"; #### given ( $foo ) { when ( tr/I/I/ == 1 ) { $bar = 'low' } when ( tr/I/I/ == 2 ) { $bar = 'med' } when ( tr/I/I/ == 3 ) { $bar = 'high' } default { $bar = "drat" } }