diff options
Diffstat (limited to 'lib/SlackBuild/Request/Loader/file.pm')
-rw-r--r-- | lib/SlackBuild/Request/Loader/file.pm | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/SlackBuild/Request/Loader/file.pm b/lib/SlackBuild/Request/Loader/file.pm new file mode 100644 index 0000000..2a8cae6 --- /dev/null +++ b/lib/SlackBuild/Request/Loader/file.pm | |||
@@ -0,0 +1,25 @@ | |||
1 | package SlackBuild::Request::Loader::file; | ||
2 | use strict; | ||
3 | use warnings; | ||
4 | use JSON; | ||
5 | use YAML (); | ||
6 | use Carp; | ||
7 | |||
8 | our $PRIORITY = 10; | ||
9 | |||
10 | sub Load { | ||
11 | my ($class, $reqname) = @_; | ||
12 | if (-f $reqname) { | ||
13 | local $/ = undef; | ||
14 | open(my $fd, $reqname) or croak "can't open file $reqname: $!"; | ||
15 | my $string = <$fd>; | ||
16 | close $fd; | ||
17 | if ($string =~ /^\{/) { | ||
18 | return decode_json($string); | ||
19 | } | ||
20 | return YAML::Load($string); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | 1; | ||
25 | |||