package Foo; my $dir; # could be 'our' to be visible from outside # portablitity... far from complete if ($^O eq 'MSWin32') { $dir = 'C:\Users'; } else { $dir = '/home'; } sub import { my $package = shift; # just the package name if (@_) { if (@_ % 2) { die "odd number of parameters in ".__PACKAGE__"::import(), aborted"; } my %args = @_; if ($args{dir}) { $dir = $args{dir}; } } } ... # more module code 1;