—use
strict;
use
warnings;
use
YAML::XS ();
our
$_CACHE
;
## TODO: publish this to CPAN as its own module
### FIXME publish as its own package
### and provide one import function which can old its own cache
sub
LoadData {
my
(
$pkg
) =
@_
;
$pkg
//= (
caller
(0))[0];
return
LoadDataFrom(
$pkg
);
}
sub
LoadDataFrom {
my
(
$pkg
) =
@_
;
die
"undefined package"
unless
defined
$pkg
;
$_CACHE
//= {};
return
$_CACHE
->{
$pkg
}
if
$_CACHE
->{
$pkg
};
my
$data
;
{
local
$/;
my
$fh
=
eval
'\*'
.
$pkg
.
'::DATA'
;
$data
= <
$fh
>;
}
return
unless
defined
$data
;
$_CACHE
->{
$pkg
} = YAML::XS::Load(
$data
);
return
$_CACHE
->{
$pkg
};
}
sub
clear_cache {
$_CACHE
= {};
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
OpenStack::MetaAPI::Helpers::DataAsYaml
=head1 VERSION
version 0.003
=head1 AUTHOR
Nicolas R <atoomic@cpan.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2019 by cPanel, Inc.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut