package Foo::Bar; BEGIN { my @attributes = qw( ... ); eval '#line ' . (1+__LINE__) . ' "' . __FILE __ . '" sub ... { ... my ( ' . join( ', ', map { "\$$_" } @attributes ) . ' ) = @{$self}{qw(' . join( ' ', @attributes ) . ')}; ... }'; die $@ if $@; }