is being used as an object, by calling its send_http_header()
methods. Without the shift (I presume this is inside a subroutine), the object represented by the reference $r
would never be referenced and the code would not work.
P.S., without seeing the context in which your example lives, it I do not exactly know what kind of object $r is , but from its method names, I suspect it's one of the Http::XXX'en.
If you GIVE a man a fish you feed him for a day
But, TEACH him to fish and you feed him for a lifetime