# When is $SAFE reset?

**URL:** <https://www.ruby-forum.com/t/when-is-safe-reset/52788>\
**Category:** Ruby\
**Created:** [January 19, 2006, 2:34am UTC](https://www.ruby-forum.com/t/when-is-safe-reset/52788 "2006-01-19T02:34:12Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Bertram\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/54ee81/32.png) [@Bertram\_S](https://www.ruby-forum.com/u/Bertram_S)\
**Post date:** [January 19, 2006, 2:34am UTC](https://www.ruby-forum.com/t/when-is-safe-reset/52788/1 "2006-01-19T02:34:12Z")

</div>

Hi,

irb(main):001:0\> begin ; $SAFE=2 ; end ; puts $SAFE  
2  
irb(main):002:0\> puts $SAFE  
0  
irb(main):003:0\> def s ; $SAFE=2 ; end ; s ; puts $SAFE  
2  
irb(main):004:0\> puts $SAFE  
0  
irb(main):005:0\> eval “$SAFE=2; puts $SAFE” ; puts $SAFE  
2  
0  
rb(main):007:0\> eval “$SAFE=1; eval ‘$SAFE=2; puts $SAFE’ ; puts $SAFE”  
; puts $SAFE  
2  
1  
0

Obviously, $SAFE will be reset after `eval' expressions have completed. Are there (besides threads) other cases where $SAFE is reset? And if not: why will it be reset after every`eval’?

Thanks in advance,

Bertram
