package PubMed::Store; use strict; use warnings; use Carp qw(confess); use File::Slurp; use IO::Uncompress::Gunzip qw(gunzip $GunzipError); use IO::File; use JSON::XS; ## loads json #sub load { # my $file=shift; # #print "I read $file\n"; # my $json=&File::Slurp::read_file($file); # #my $json=&File::Slurper::read_text($file); # my $data=decode_json($json); # return $data; #} ## loads json sub load { my $file=shift; if(not -f $file) { confess "I don't see your file $file"; } my $json; if(substr($file,-3) eq '.gz') { my $input = new IO::File "< $file" or confess "I can't open $file: $!\n" ; gunzip $input => \$json or die "gunzip failed: $GunzipError\n"; } else { $json=&File::Slurp::read_file($file); } my $data=decode_json($json); return $data; } ## dumps json sub save { my $data=shift; my $file=shift; if(not ref($data)) { confess("You gave me a string as the first argument."); } my $json=encode_json($data); # &File::Slurper::write_text($file,$json); &File::Slurp::write_file($file,$json); return 1; } ## dumps json sub savegz { my $data=shift; my $file=shift; my $json=encode_json($data); # &File::Slurper::write_text($file,$json); &File::Slurp::write_file($file,$json); system("/bin/gzip -f $file"); return 1; } ## dumps json sub save_to_file_utf8 { my $data=shift; my $file=shift; my $json = JSON::XS->new->utf8->indent->encode($data); # &File::Slurper::write_text($file,$json); my $exit=eval { &File::Slurper::write_text($file,$json); }; if($exit) { confess $exit; } return 1; } 1;