The library looks groovy.

But I never knew that block quoted strings worked like this:

> args = Getopt::Declare.new(<<'EOF')
>    -q, --quiet                 quiet
>    -f, --files <files:if>...   input files
>    -n, --number  <num:n>       a float number
>    -i, --integer <num:i>       an integer number
>  EOF

That's just completely cool! And it also makes a lot of sense: I think
I'll actually remember it now.

You can do somethin like this:

  irb(main):008:0> puts <<'STRING_END'.gsub('a') {'XXX'}
  irb(main):009:0' bab
  irb(main):010:0' aba
  irb(main):011:0' STRING_END
  bXXXb
  XXXbXXX


You can even do this (discovered just now in one of those, "surely this
wont work too, will it?" Ruby moments)!...

  irb(main):015:0> puts <<BLOCK_ONE_END + <<BLOCK_TWO_END
  irb(main):016:0" hello
  irb(main):017:0" there
  irb(main):018:0" BLOCK_ONE_END
  irb(main):019:0" and how about
  irb(main):020:0" some more?
  irb(main):021:0" BLOCK_TWO_END
  hello
  there
  and how about
  some more?

Brilliant!

Anyone know when you do and don't need to place ''s around the string
terminator?

Cheers,
  Benjohn