Yep right, strange (if we compare with other convertion functions) but if we go deeper, the input parameter should be a reference and here $response is a value ("ייי"), or maybe I don't understand something! Can you explain that?!
if you called a function with two arguments, those would be stored in $_[0] and $_1 . The array @_ is a local array, but its elements are aliases for the actual scalar parameters. In particular, if an element $_[0] is updated, the corresponding argument is updated (or an error occurs if it is not updatable).