use strict; use warnings; use Data::Dumper; my $obj = bless {}, "TST1"; my $str1 = Dumper $obj; my $str2 = q($VAR1 = bless( {}, 'TST2' );); package Bless::Safe; use subs qw/bless/; sub bless ($;$) { my ($obj,$class) = @_; die "Can't bless into non-existent Package $class" unless exists $main::{"${class}::"}; } our $VAR1; eval($str1) or $@ && die $@; # OK eval($str2) or $@ && die $@; # FAILS #### Can't bless into non-existent Package TST2 at d:/tmp/pm/override_bless.pl line 21.