in reply to text->tagBind() question

This has to do with how Perl handles object oriented calls. (See perltoot for a starting point). Perl handle functions called on an object as calling the function in the object's class' namespace, placing the object at the start of the argument list for the function. Basically, when you write:
$myobject->do_something( $arg1, $arg2, @rest );
Perl reparses this as:
do_something( $myobject, $arg1, $arg2, @rest );
and then otherwise treats this as a normal function. Thus, to get the actual object that you are working on, typically called "$self", you simple shift out the first argument that is passed to that function.

So you're doing everything correctly; that first line is basically necessary to work with objects in perl.

Dr. Michael K. Neylon - || "You've left the lens cap of your mind on again, Pinky" - The Brain
"I can see my house from here!"
It's not what you know, but knowing how to find it if you don't know that's important