in reply to Undef doesnt work?This has got me stumped

It works as expected. self->{blah} is only one on every iteration. But you increment also the global var blah every time you call  printblah. try to start your script with use strict; to note such errors.
Boris