#!/usr/bin/env perl use strict; use warnings; use v5.12; use Convert::Binary::C; use Hash::Util qw/lock_hash/; my %C_ENUMS; { my $c = Convert::Binary::C->new->parse_file( 'mytest.h' ); %C_ENUMS = map %{ $_->{enumerators} || {} }, $c->enum; lock_hash( %C_ENUMS ); } say "'efg' is $C_ENUMS{efg}"; say "'kurt' is $C_ENUMS{kurt}"; eval{ $C_ENUMS{kurt} = 15; }; print $@ if $@; say "'kurt' is $C_ENUMS{kurt}";