Joel VanderWerf wrote:

> ChrisO wrote:
> 
>> This is where I'm looking to get with Ruby and I still reach for Perl 
>> because I don't know Ruby as well.  It happened today at work.  I 
>> needed to extract some server names from a piece of Perl code (text) 
>> that looked like this:
>>
>>     { SERVER => "servername1", SHARE = $Default },
>>     { SERVER => "servername2", SHARE = $Default },
>>     { SERVER => "servername3", SHARE = $Default },
>>     { SERVER => "servername4", SHARE = $Default },
>>     { SERVER => "servername5", SHARE = $Default },
>>     { SERVER => "servername6", SHARE = $Default },
>>     { SERVER => "servername7", SHARE = $Default },
>>     { SERVER => "servername8", SHARE = $Default },
>>
>> (The server names were more unique than the contrived names above.)  
>> In Perl it was:
>>
>> perl -e 'while (<>) { /"(\w*)"/; print "$1\n" }' file-snippet.txt
>>
>> In Ruby?  I didn't have the time to figure it out.  Which is the 
>> agonizing point.  Later, I did the following in Ruby to satisfactory 
>> effect:
>>
>> ruby -e 'ARGF.each { |line| line.scan( /"(\w*)"/ ) { |frag| puts frag 
>> } }' file-snippet.txt
>>
>> Perhaps someone can refine this while we're at it.  It's hard not to 
>> notice that the Perl was more concise.  Perhaps my ignorance can be 
>> made right...?  Can this be shortened in Ruby?  Surely...
> 
> 
> Golf.shoes = "on"
> 
> $ ruby -n -e 'puts $1 if /"(\w+)"/' file-snippet.txt
> servername1
> servername2
> servername3
> servername4
> servername5
> servername6
> servername7
> servername8

Wow.  So tonight I learn about the -n switch.  Nice.  And I didn't think 
the $1 would be available as in Perl.  So it's good to know that's in 
Ruby too.  Sweet.

-ceo