use File::Spec->catfile in run()