I think you'll find your original program was crashing regardless, you just weren't seeing the error message when the comment was there (i had a similar problem with data after an
__END__ token that also hid the error). Can't explain why tho'...
The require trick mentioned above still doesn't solve the following scenario:
use strict;
require Win32::MMF::Shareable;
$|++;
tie( my $share, 'Win32::MMF::Shareable', 'share' ) || die;
$share = 'foo';
# do some unrelated forking with $share in scope
unless( fork ) { exit 0 }
# make sure child exits before continuing
sleep 1;
# set/get crashes
print "----before\n";
$share = 'bar';
my $temp = $share;
print "----after\n";
__END__
----before
- ><iper
use japh; print;