#!/usr/bin/perl
# Idiom #295 String to Enum
use feature 'say' ;
my %T = ( RED => 1 , GREEN => 2 , BLUE => 3 ) ;
sub TryStrToEnum
{ my $s = shift ; $T { uc $s } }
say '$T{BLUE} is ' , $T { BLUE} ;
say '$T{GREEN} is ' , $T { GREEN} ;
say '$T{RED} is ' , $T { RED} ;
say '$T{XXX} is ' , $T { XXX} ; # warns Use of uninitialized value in say
print "TryStrToEnum('Green') is " , TryStrToEnum
( 'Green' ) , "\n " ;
say 'names are case sensitive' ;
say 'name conversion by TryStrToEnum is not case sensitive' ;
IyEvdXNyL2Jpbi9wZXJsCgojIElkaW9tICMyOTUgU3RyaW5nIHRvIEVudW0KCnVzZSBmZWF0dXJlICdzYXknOwoKbXkgJVQgPSAoIFJFRCA9PiAxLCBHUkVFTiA9PiAyLCBCTFVFID0+IDMgKTsKCnN1YiBUcnlTdHJUb0VudW0geyBteSAkcyA9IHNoaWZ0OyAkVHt1YyAkc30gfQoKc2F5ICckVHtCTFVFfSAgaXMgJywgJFR7QkxVRX07CnNheSAnJFR7R1JFRU59IGlzICcsICRUe0dSRUVOfTsKc2F5ICckVHtSRUR9ICAgaXMgJywgJFR7UkVEfTsKc2F5ICckVHtYWFh9ICAgaXMgJywgJFR7WFhYfTsgICAjIHdhcm5zIFVzZSBvZiB1bmluaXRpYWxpemVkIHZhbHVlIGluIHNheQoKcHJpbnQgIlRyeVN0clRvRW51bSgnR3JlZW4nKSBpcyAiLCBUcnlTdHJUb0VudW0oJ0dyZWVuJyksIlxuIjsKCnNheSAnbmFtZXMgYXJlIGNhc2Ugc2Vuc2l0aXZlJzsKc2F5ICduYW1lIGNvbnZlcnNpb24gYnkgVHJ5U3RyVG9FbnVtIGlzIG5vdCBjYXNlIHNlbnNpdGl2ZSc7Cg==