So you want me to explains how it's impossible to write the method without the print operator? Well, why don't you try it.
Or are you asking me to explain why they don't do the same thing? Well, consider
>perl -le"$x = 'abc'; print $x;"
As you can see, it doesn't call the method $x of class abc. If it was an indirect method call, it would have the following outcome:
>perl -le"$x = 'abc'; $x->print;"
Can't locate object method "print" via package "abc" (perhaps you forg
+ot to load "abc"?) at -e line 1.