In the first case, when temp() is called @_ contains ('Send'), while in the second case @_ contains ($obj). Since temp() doesn't use @_, that difference isn't significant here. However, if you have a method that needs to access instance data, you'd need to call the method on a specific instance, of course. For example:
package Send;
sub poke {
my $self = shift;
$self->{thingy} = 1;
}
sub new {
return bless {}, $_[0];
}
package main;
my $obj = new Send;
$obj->poke(); # good
Send->poke(); # bad
Really it just depends on what you want the method to do.