#!/usr/bin/perl -w use strict; package MyClass; sub new { my ($class, %args) = @_; my $self = {verbose => $args{verbose} || 0}; return bless $self, $class; } sub verbose { my $self = shift; $self->{verbose} = shift if @_; return $self->{verbose}; } sub isFile { my $self = shift; my $file = shift; # Did you really want to print the error message # when -f fails even if not in verbose mode? print STDERR "$file ", (-f $file ? 'found' : 'not found') if $self->verbose; return -f _; } package MyModule; sub isFile($;$) { my $file = shift; my $object = MyClass->new(verbose => shift || 0); return $object->isFile; }