Chris Davies wrote:
> Now, I'm familiar with a the use of "<<" as a bitwise left shift
> and as a here doc, but this one throws me. [...]


Think of it as a method, not as an operator.
Every class can define a method that is called '<<'
just like any class can define a method called 'print' or 'count'.

Don't let this syntax fool you:

str = "basic"
str << "appended"

It is just a nice to read way of saying the
following, which explains it and works, too:

str = "basic"
str.<<( "appended" )

Got it?

Hrmn