fork download
  1. #!/usr/bin/perl
  2.  
  3. # Idiom #295 String to Enum
  4.  
  5. use feature 'say';
  6.  
  7. my %T = ( RED => 1, GREEN => 2, BLUE => 3 );
  8.  
  9. sub TryStrToEnum { my $s = shift; $T{uc $s} }
  10.  
  11. say '$T{BLUE} is ', $T{BLUE};
  12. say '$T{GREEN} is ', $T{GREEN};
  13. say '$T{RED} is ', $T{RED};
  14. say '$T{XXX} is ', $T{XXX}; # warns Use of uninitialized value in say
  15.  
  16. print "TryStrToEnum('Green') is ", TryStrToEnum('Green'),"\n";
  17.  
  18. say 'names are case sensitive';
  19. say 'name conversion by TryStrToEnum is not case sensitive';
  20.  
Success #stdin #stdout 0.01s 5436KB
stdin
Standard input is empty
stdout
$T{BLUE}  is 3
$T{GREEN} is 2
$T{RED}   is 1
$T{XXX}   is 
TryStrToEnum('Green') is 2
names are case sensitive
name conversion by TryStrToEnum is not case sensitive