#!/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==