#! perl -w use strict; package MyModule; sub isFile { my $file = shift; # a file in local directory expected my $verbose = shift; # optional if (! -f $file) { print STDERR "*** no such file $file in current directory\n"; return 0; } else { print STDERR "... isFile $file\n" if $verbose; return 1; } } # more subs ... 1; #### #! perl -w use strict; use MyModule; # before change to OO and after MyModule::isFile("MyModuleTest.pl"); MyModule::isFile("NotHere"); #### #! perl -w use strict; package MyModule; sub new { my ($class, %args) = @_; my $self = { class => $class, verbose => $args{verbose} || 0, otheropt => $args{otheropt} || 0, }; bless $self, $class; return $self; } sub isFile { my $self = shift if ref $_[0] && ref $_[0] eq $_[0]->{class}; my $file = shift; # a file in current directory expected if (! -f $file) { print STDERR "*** $file: file not found in current directory\n"; return 0; } else { print STDERR "... $file: file found in current directory\n" if $self->{verbose}; return 1; } } # more subs ... 1; #### #! perl -w use strict; use MyModule; # works before change to OO and after MyModule::isFile("MyModuleTest.pl"); MyModule::isFile("NotHere"); # works after change to OO my $mod = MyModule->new; $mod->isFile("MyModuleTest.pl"); $mod->isFile("NotHere"); $mod = MyModule->new( verbose => 1 ); $mod->isFile("MyModuleTest.pl"); $mod->isFile("NotHere");