# Can't modify literal regexp: why?

**URL:** <https://www.ruby-forum.com/t/cant-modify-literal-regexp-why/120117>\
**Category:** Ruby\
**Created:** [November 13, 2007, 9:56pm UTC](https://www.ruby-forum.com/t/cant-modify-literal-regexp-why/120117 "2007-11-13T21:56:14Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![jeremysarda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9e5f3/32.png) [@jeremysarda](https://www.ruby-forum.com/u/jeremysarda)\
**Post date:** [November 13, 2007, 9:56pm UTC](https://www.ruby-forum.com/t/cant-modify-literal-regexp-why/120117/1 "2007-11-13T21:56:14Z")

</div>

I was just curious as to why this is illegal.

Example:  
$ irb

> > /blah/.clone  
> > SecurityError: can’t modify literal regexp  
> > from (irb):1:in `initialize_copy' from (irb):1:in`clone’  
> > from (irb):1
> 
> >

Regexp.new(/blah/).clone is perfectly OK. What’s insecure about cloning  
a literal regex?

---

<div class="post-metadata">

**Author:** ![jeremysarda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9e5f3/32.png) [@jeremysarda](https://www.ruby-forum.com/u/jeremysarda)\
**Post date:** [November 13, 2007, 10:02pm UTC](https://www.ruby-forum.com/t/cant-modify-literal-regexp-why/120117/2 "2007-11-13T22:02:28Z")

</div>

Jeremy S. wrote:

> I was just curious as to why this is illegal.
> 
> Example:  
> $ irb
> 
> > > /blah/.clone  
> > > SecurityError: can’t modify literal regexp  
> > > from (irb):1:in `initialize_copy' from (irb):1:in`clone’  
> > > from (irb):1
> > 
> > >
> 
> Regexp.new(/blah/).clone is perfectly OK. What’s insecure about cloning  
> a literal regex?

(/blah/).clone

---

<div class="post-metadata">

**Author:** ![jeremysarda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9e5f3/32.png) [@jeremysarda](https://www.ruby-forum.com/u/jeremysarda)\
**Post date:** [November 14, 2007, 5:33am UTC](https://www.ruby-forum.com/t/cant-modify-literal-regexp-why/120117/3 "2007-11-14T05:33:45Z")

</div>

Hi,

At Wed, 14 Nov 2007 05:56:12 +0900,  
Jeremy S. wrote in [ruby-talk:278872]:

> Regexp.new(/blah/).clone is perfectly OK. What’s insecure about cloning  
> a literal regex?

It is to prohibit /blah/.initialize\_copy(/foobar/). You may  
know, /blah/.dup works.

---

<div class="post-metadata">

**Author:** ![jeremysarda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9e5f3/32.png) [@jeremysarda](https://www.ruby-forum.com/u/jeremysarda)\
**Post date:** [November 14, 2007, 3:48pm UTC](https://www.ruby-forum.com/t/cant-modify-literal-regexp-why/120117/4 "2007-11-14T15:48:02Z")

</div>

Nobuyoshi N. wrote:

> Hi,
> 
> At Wed, 14 Nov 2007 05:56:12 +0900,  
> Jeremy S. wrote in [ruby-talk:278872]:
> 
> > Regexp.new(/blah/).clone is perfectly OK. What’s insecure about cloning  
> > a literal regex?
> 
> It is to prohibit /blah/.initialize\_copy(/foobar/). You may  
> know, /blah/.dup works.

Thanks for the info. Anyone know _why_ it’s prohibited? Just curious.

---

<div class="post-metadata">

**Author:** ![jeremysarda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9e5f3/32.png) [@jeremysarda](https://www.ruby-forum.com/u/jeremysarda)\
**Post date:** [November 14, 2007, 7:59pm UTC](https://www.ruby-forum.com/t/cant-modify-literal-regexp-why/120117/5 "2007-11-14T19:59:02Z")

</div>

On Nov 14, 2007, at 06:48 , Jeremy S. wrote:

> > It is to prohibit /blah/.initialize\_copy(/foobar/). You may  
> > know, /blah/.dup works.
> 
> Thanks for the info. Anyone know _why_ it’s prohibited? Just  
> curious.

x = /x/.dup  
x.send :initialize\_copy, /y/  
p x # =\> /y/
