in reply to Calling Subs

Yes - the first is called an class method - you do not need to instantiate an object before calling the method. Use these just for that situation - when you don't need to create a new object (waste of RAM).

The second example is best used when you need to store state information in an object. That way, the method can do it's thing based on what the state of the object is.

The fact that they return the same value is because it is the same function which happens to not use member variables. If that function used some member varibles that were specific to a particular instance of the class - then you would see a difference.

Here is an example:

#!/usr/bin/perl -w use strict; package foo; sub new { my ($class) = @_; return bless { foo => 'bar', }, $class; } sub baz { my ($self) = shift; print $self->{'foo'}, "\n"; } package main; my $obj = new foo; $obj->baz; # prints bar &foo::baz; # unitialized value warning issued
Jeff

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
F--F--F--F--F--F--F--F--
(the triplet paradiddle)