http://www.perlmonks.org?node_id=413393


in reply to Syntax question when using Class::DBI

There is no problem with using a simple scalar variable when dynamically calling a method, as Fletch illustrated. However if you're using an aggregate variable or an expression you can simply use the can method e.g
print $rowobj->can( $cols{id} )->();
Or if you wish to call it directly you need to be a little indirect and take advantage of scalar dereferencing e.g
print $rowobj->${ \$cols{id} };
Addendum: On a more practical note you can always access the primary key by using the id accessor method, regardless of what is the name of the actual row; as documented.
HTH

_________
broquaint