# Re: Hello, world? (#158)

**URL:** <https://www.ruby-forum.com/t/re-hello-world-158/130766>\
**Category:** Ruby\
**Created:** [March 3, 2008, 6:35am UTC](https://www.ruby-forum.com/t/re-hello-world-158/130766 "2008-03-03T06:35:39Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Joel\_VanderWerf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e19b73/32.png) [@Joel\_VanderWerf](https://www.ruby-forum.com/u/Joel_VanderWerf)\
**Post date:** [March 3, 2008, 6:35am UTC](https://www.ruby-forum.com/t/re-hello-world-158/130766/1 "2008-03-03T06:35:39Z")

</div>

Going back to the original…

require ‘ostruct’

class BProgram  
class Context \< OpenStruct  
def extrn(\*)  
end

```
 def putchar char
   print char.gsub(/\*n/) {"\n"}
 end

```

end

def self.run\_in\_ruby(&block)  
new(&block).run  
end

def initialize(&block)  
@ctx = Context.new  
instance\_eval(&block)  
end

def run  
@ctx.instance\_eval(&@main)  
end

def main(&block)  
@main = block  
end

def method\_missing(name, arg)  
@ctx.send("#{name}=", arg)  
end  
end

BProgram.run\_in\_ruby {  
main( ) {  
extrn a, b, c;  
putchar(a); putchar(b); putchar©; putchar(’!\*n’);  
}

a ‘hell’;  
b ‘o, w’;  
c ‘orld’;  
}

---

<div class="post-metadata">

**Author:** ![Joel\_VanderWerf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e19b73/32.png) [@Joel\_VanderWerf](https://www.ruby-forum.com/u/Joel_VanderWerf)\
**Post date:** [March 3, 2008, 10:25am UTC](https://www.ruby-forum.com/t/re-hello-world-158/130766/2 "2008-03-03T10:25:47Z")

</div>

From: “Joel VanderWerf” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> }  
> Hahaha…! Very nice

Nice use of OpenStruct…

Anyone know Mr. Kernighan well enough to send him this?  
/me imagines he might get a kick out of it … 😃

Regards,

Bill
