X-Git-Url: http://git.refcnt.org/?p=distdns.git;a=blobdiff_plain;f=client.pl;h=2a73f4e6de5f0f9218a98c69758224f40aed0841;hp=729663f51a3c9a0b37148fddb617b9aa26960326;hb=HEAD;hpb=eb97e893a835f728f4bff344d937d0b1813f711e diff --git a/client.pl b/client.pl index 729663f..2a73f4e 100755 --- a/client.pl +++ b/client.pl @@ -1,6 +1,6 @@ #!/usr/bin/perl # -# Copyright (c) 2013 Michel Ketterle, Steven Schubiger +# Copyright (c) 2013, 2015 Michel Ketterle, Steven Schubiger # # This file is part of distdns. # @@ -21,19 +21,41 @@ use strict; use warnings; use constant false => 0; -use Config::Tiny; -use Digest::MD5 qw(md5_hex); -use Fcntl ':flock'; -use File::Spec::Functions qw(catfile rel2abs); -use FindBin qw($Bin); -use Getopt::Long qw(:config no_auto_abbrev no_ignore_case); -use JSON qw(decode_json); -use LWP::UserAgent; -use POSIX qw(strftime); -use Sys::Hostname qw(hostname); -use Tie::File; +BEGIN +{ + my @modules = ( + [ 'Config::Tiny', [ ] ], + [ 'Digest::MD5', [ qw(md5_hex) ] ], + [ 'Fcntl', [ qw(:flock) ] ], + [ 'File::Spec::Functions', [ qw(catfile rel2abs) ] ], + [ 'FindBin', [ qw($Bin) ] ], + [ 'Getopt::Long', [ qw(:config no_auto_abbrev no_ignore_case) ] ], + [ 'JSON', [ qw(decode_json) ] ], + [ 'LWP::UserAgent', [ ] ], + [ 'POSIX', [ qw(strftime) ] ], + [ 'Sys::Hostname', [ qw(hostname) ] ], + [ 'Tie::File', [ ] ], + ); + my (@missing, @import); + foreach my $module (@modules) { + unless (eval "require $module->[0]; 1") { + push @missing, $module->[0]; + next; + } + unless (eval { $module->[0]->import(@{$module->[1]}); 1 }) { + push @import, $module->[0]; + } + } + if (@missing || @import) { + warn <<"EOT"; +Modules missing: @missing +Import failures: @import +EOT + exit 1; + } +} -my $VERSION = '0.06'; +my $VERSION = '0.07'; my $conf_file = catfile($Bin, 'client.conf'); @@ -94,8 +116,7 @@ my $save_session = sub my $get_session = sub { open(my $fh, '<', $session_file) or _die "Cannot open $session_file for reading: $!\nPerhaps try running --init\n"; - my $session = do { local $/; <$fh> }; - chomp $session; + chomp(my $session = <$fh>); close($fh); return $session;