in reply to Can locate when called directly, but can't when in @ISA

@ISA doesn't magically load the classes you're inheriting from. The child class Lens still needs to load (use) the parent class Cloud.

Also, you may want to 'use strict' and 'use warnings' and prefix @ISA with 'our'.

You can do both by using the 'base' pragma:

use base qw(Exporter Cloud);