sub new {
my ($self,$class)=@_;
....
our $cache=Fiets::Cache->new();
There is no '$self' in the argument list when you call new like that. The assignment in new() should just be:
my ($class) = @_;
# or
# my $class = shift;
And your use of
base is um, just wrong. 'use base' is meant to be set at a package level, and when you use it, you don't need the 'use *package*' line. Is your cachedir set once per program, and you want to inherit from Cache::FileCache or Cache::NullCache based on it per program run, or can it change per instance of an object? I'm not going to guess at what you want there.