# Search an array

**URL:** <https://www.ruby-forum.com/t/search-an-array/94815>\
**Category:** Ruby\
**Created:** [May 15, 2006, 5:58pm UTC](https://www.ruby-forum.com/t/search-an-array/94815 "2006-05-15T17:58:56Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![pkspence](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a88e57/32.png) [@pkspence](https://www.ruby-forum.com/u/pkspence)\
**Post date:** [May 15, 2006, 5:58pm UTC](https://www.ruby-forum.com/t/search-an-array/94815/1 "2006-05-15T17:58:56Z")

</div>

Given the following scenario…

$0 = “C:/mhiqTest/testAdoConnection.rb”

$@[0] = “c:/ruby/lib/ruby/site\_ruby/1.8/DBD/ADO/ADO.rb:57:in `connect'" $@[1] = "c:/ruby/lib/ruby/site_ruby/1.8/dbi.rb:424:in`connect’”  
$@[2] = “c:/ruby/lib/ruby/site\_ruby/1.8/dbi.rb:215:in `connect’”  
$@[3] = “C:/mhiqTest/testAdoConnection.rb:16”

How can I search the callstack array; $@, for the element that contains  
the currently running program; $0? The idea is to log all the errors to  
a SQL Server database, the name of the program, line number where the  
error occurred, error message, etc.

Thanks!

---

<div class="post-metadata">

**Author:** ![pkspence](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a88e57/32.png) [@pkspence](https://www.ruby-forum.com/u/pkspence)\
**Post date:** [May 15, 2006, 6:08pm UTC](https://www.ruby-forum.com/t/search-an-array/94815/2 "2006-05-15T18:08:42Z")

</div>

Patrick S. wrote:

> Given the following scenario…  
> […]  
> How can I search the callstack array; $@, for the element that contains  
> the currently running program; $0? The idea is to log all the errors to  
> a SQL Server database, the name of the program, line number where the  
> error occurred, error message, etc.

Slightly modified but basically the same as your scenario, searching $a  
rather than $@ since it’s not amenable to being set directly apparently.

irb(main):018:0\> pp $0  
“C:/mhiqTest/testAdoConnection.rb”  
=\> nil  
irb(main):019:0\> pp $a  
[“c:/ruby/lib/ruby/site\_ruby/1.8/DBD/ADO/ADO.rb:57:in `connect'", "c:/ruby/lib/ruby/site_ruby/1.8/dbi.rb:424:in`connect’”,  
“c:/ruby/lib/ruby/site\_ruby/1.8/dbi.rb:215:in `connect’”,  
“C:/mhiqTest/testAdoConnection.rb:16”]  
=\> nil  
irb(main):020:0\> $a.grep( %r/^#$0/ )  
=\> [“C:/mhiqTest/testAdoConnection.rb:16”]

---

<div class="post-metadata">

**Author:** ![pkspence](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a88e57/32.png) [@pkspence](https://www.ruby-forum.com/u/pkspence)\
**Post date:** [May 15, 2006, 6:35pm UTC](https://www.ruby-forum.com/t/search-an-array/94815/3 "2006-05-15T18:35:12Z")

</div>

Mike F. wrote:

> irb(main):018:0\> pp $0  
> “C:/mhiqTest/testAdoConnection.rb”  
> =\> nil  
> irb(main):019:0\> pp $a  
> [“c:/ruby/lib/ruby/site\_ruby/1.8/DBD/ADO/ADO.rb:57:in `connect'", "c:/ruby/lib/ruby/site_ruby/1.8/dbi.rb:424:in`connect’”,  
> “c:/ruby/lib/ruby/site\_ruby/1.8/dbi.rb:215:in `connect’”,  
> “C:/mhiqTest/testAdoConnection.rb:16”]  
> =\> nil  
> irb(main):020:0\> $a.grep( %r/^#$0/ )  
> =\> [“C:/mhiqTest/testAdoConnection.rb:16”]

What is “pp”? BTW, I’m very new to Ruby!

---

<div class="post-metadata">

**Author:** ![pkspence](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a88e57/32.png) [@pkspence](https://www.ruby-forum.com/u/pkspence)\
**Post date:** [May 15, 2006, 10:41pm UTC](https://www.ruby-forum.com/t/search-an-array/94815/4 "2006-05-15T22:41:43Z")

</div>

Patrick S. wrote:

> Mike F. wrote:
> 
> > irb(main):018:0\> pp $0  
> > “C:/mhiqTest/testAdoConnection.rb”  
> > =\> nil  
> > irb(main):019:0\> pp $a  
> > [“c:/ruby/lib/ruby/site\_ruby/1.8/DBD/ADO/ADO.rb:57:in `connect’”,  
> > “c:/ruby/lib/ruby/site\_ruby/1.8/dbi.rb:424:in `connect’”,  
> > “c:/ruby/lib/ruby/site\_ruby/1.8/dbi.rb:215:in `connect’”,  
> > “C:/mhiqTest/testAdoConnection.rb:16”]  
> > =\> nil  
> > irb(main):020:0\> $a.grep( %r/^#$0/ )  
> > =\> [“C:/mhiqTest/testAdoConnection.rb:16”]
> 
> What is “pp”? BTW, I’m very new to Ruby!

It’s the pretty printing library. I have it required in my ~/.irbrc so  
it’s always available in irb sessions (as is the YAML module so I can  
also ‘print foo.to\_yaml’)

[http://www.ruby-doc.org/stdlib/libdoc/pp/rdoc/index.html](http://www.ruby-doc.org/stdlib/libdoc/pp/rdoc/index.html)
