view release on metacpan or search on metacpan
lib/App/Fetchware.pm view on Meta::CPAN
package App::Fetchware;
our $VERSION = '1.016'; # VERSION: generated by DZP::OurPkgVersion
# ABSTRACT: App::Fetchware is Fetchware's API used to make extensions.
###BUGALERT### Uses die instead of croak. croak is the preferred way of throwing
#exceptions in modules. croak says that the caller was the one who caused the
#error not the specific code that actually threw the error.
use strict;
use warnings;
lib/App/Fetchware.pm view on Meta::CPAN
#
#=item * 'ONEARRREF'
#
#Generates a function with the name of _make_config_sub()'s first parameter that
#can B<only> be called one time per Fetchwarefile. And just like C<'ONE'> above
#if called more than once it will throw an exception. However, C<'ONEARRREF'> can
#be called with a list of values just like C<'MANY'> can, but it can still only
#be called once like C<'ONE'>.
#
#=item * 'MANY'
#
lib/App/Fetchware.pm view on Meta::CPAN
) {
# If the user is ok with not properly verifying downloads, then
# ignore the failure, and install anyway.
$options{verify_failure_ok} = 'On';
} else {
# Otherwise, throw an exception.
die <<EOD;
fetchware: Fetchware *must* be able to verify any software packages that it
downloads. The Fetchwarefile that you were creating could not do this, because
you failed to specify how fetchware can verify its downloads. Please rerun
fetchware new again, and this time be sure to specify a gpg_keys_url, specify
lib/App/Fetchware.pm view on Meta::CPAN
# array? Return undef--nope causes "value undef in sort fatal errors
# and warnings." Return 0--nope causes a file with no version number
# at beginning of listing to stay at listing, and cause fetchware to
# fail picking the right version. Return -1--nope, because that's
# hackish and lame. Instead, just not include them in the lookup
# listing, and if that means that the lookup listing is empty throw
# an exception.
next;
}
# Add $i's version string to @versionstrings.
push @versionstrings, [$i, @iversionstring];
lib/App/Fetchware.pm view on Meta::CPAN
} elsif (config('verify_method') =~ /gpg/i) {
vmsg <<EOM;
You selected gpg cryptographic verification. Verifying now.
EOM
###BUGALERT### Should trap the exception {gpg,sha1,md5}_verify()
#throws, and then add that error to the one here, otherwise the
#error message here is never seen.
gpg_verify($download_path)
or die <<EOD unless config('verify_failure_ok');
App-Fetchware: run-time error. You asked fetchware to only try to verify your
package with gpg or openpgp, but they both failed. See the warning above for
lib/App/Fetchware.pm view on Meta::CPAN
}
}
# Process @both_are_defined by checking if both of the elements in the
# provided arrayrefs are "both defined", and if they are "both defined"
# throw an exception.
for my $AnB (@both_are_defined) {
my ($A, $B) = @$AnB;
my @A_defined;
my @B_defined;
lib/App/Fetchware.pm view on Meta::CPAN
}
}
# Process @mandatory options by checking if they're defined, and if not
# throwing the specified exception.
for my $AnB (@mandatory) {
my ($option, $error_message) = @$AnB;
die $error_message if not defined config($option);
}
lib/App/Fetchware.pm view on Meta::CPAN
# Run git verify-tag to verify the latest tag
my $success = eval { run_prog('git verify-tag', "$latest_tag"); 1;};
# If the git verify-tag fails, *and* verify_failure_ok has been turned on,
# then ignore the thrown exception, but print an annoying message.
unless (defined $success and $success) {
unless (config('verify_failure_ok')) {
msg <<EOM;
Verification failure ok, becuase you've configured fetchware to continue even
if it cannot verify its downloads. Please reconsider, because mirror and source
lib/App/Fetchware.pm view on Meta::CPAN
in its test suite that you may find helpful. These include:
=over
=item L<Test::Fetchware/eval_ok()> - A poor man's Test::Exception. Captures any
exceptions that are thrown, and compares them to the provided exception text or
regex.
=item L<Test::Fetchware/print_ok()> - A poor man's Test::Output. Captures
STDOUT, and compares it to the provided text.
lib/App/Fetchware.pm view on Meta::CPAN
is important, because it allows extension authors to change all of the
C<App::Fetchware> references in the error messages to their own fetchware
extensions name.
extension_name() is a singleton, and can only be set once. After being set only
once any attempts to set it again will result in an exception being thrown.
Furthermore, any calls to it without arguments will result in it returning the
one scalar argument that was set the first time it was called.
=head3 opening_message();
lib/App/Fetchware.pm view on Meta::CPAN
=back
=back
C<lookup_method> can be either C<'timestamp'> or C<'versionstring'>, any other
values will result in fetchware throwing an exception.
=head2 lookup() API REFERENCE
The subroutines below are used by lookup() to provide the lookup functionality
for fetchware. If you have overridden the lookup() handler, you may want to use
lib/App/Fetchware.pm view on Meta::CPAN
same filename as the software package, but usually with a C<.asc> file name
extension. gpg_verify() downloads the author's keys, imports them into
fetchware's own keyring unless the user sets C<user_keyring> to true in his
Fetchwarefile. Then Fetchware downloads a digital signature that usually
ends in C<.asc>. Afterwards, fetchware uses the gpg command line program to
verify the digital signature. gpg_verify returns true if successful, and throws
an exception otherwise.
You can use C<gpg_keys_url> to specify the URL of a file where the author has
uploaded his keys. And the C<gpg_sig_url> can be used to setup an alternative
location of where the C<.asc> digital signature is stored.
lib/App/Fetchware.pm view on Meta::CPAN
my $build_path = check_archive_files($files);
Checks if all of the files in the archive are contained in one B<main>
directory, and spits out a warning if they are not. Also checks if
B<one or more> of the files is an absolute path, and if so it throws an
exception, because absolute paths could potentially overwrite important system
files messing up your computer.
=head2 build()
lib/App/Fetchware.pm view on Meta::CPAN
chdir_unless_already_at_path() takes a $path as its argument, and determines if
that path is currently part of the current processes current working directory.
If it is, then it does nothing. Buf if the given $path is not in the current
working directory, then it is chdir()'d to.
If the chdir() fails, an exception is thrown.
=head2 uninstall()
'uninstall succeeded' = uninstall($build_path)
lib/App/Fetchware.pm view on Meta::CPAN
=item Mandatory
Is used to check for mandatory options, which just means that these options
absolutely must be specified in user's Fetchwarefiles, and if they are not, then
the provided error message is thrown as an exception.
=item ConfigOptionEnum
Tests that enumerations are valid. For example, C<lookup_method> can only take
two values C<timestamp> or C<versionstring>, and ConfigOptionEnum is used to
lib/App/Fetchware.pm view on Meta::CPAN
This would not prevent any error messages from STDERR being printed to your
screen for that:
fetchware install <some-program.Fetchwarefile> 2>&1 fetchware.log
And to throw away all messages use:
fetchware -q install <some-progra.Fetchwarefile>
or use the shell
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/FileTools/BulkRename/UserCommands.pm view on Meta::CPAN
# We're overriding the core uc and lc routines to provide versions
# that automatically modify their parameters if called in void
# context.
# In practice this shouldn't be an issue, as uc and lc throw errors in
# void context, which is the only context in which these two subs are
# supposed to differ, but better safe than sorry.
package _USER;
use subs qw(uc lc); # override the core routines.
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/Followme/Template.pm view on Meta::CPAN
=back
=head1 ERRORS
What to check when this module throws an error
=over 4
=item Couldn't read template
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install.pm view on Meta::CPAN
# If the modification time is only slightly in the future,
# sleep briefly to remove the problem.
my $a = $s - time;
if ( $a > 0 and $a < 5 ) { sleep 5 }
# Too far in the future, throw an error.
my $t = time;
if ( $s > $t ) { die <<"END_DIE" }
Your installer $0 has a modification time in the future ($s > $t).
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install.pm view on Meta::CPAN
# If the modification time is only slightly in the future,
# sleep briefly to remove the problem.
my $a = $s - time;
if ( $a > 0 and $a < 5 ) { sleep 5 }
# Too far in the future, throw an error.
my $t = time;
if ( $s > $t ) { die <<"END_DIE" }
Your installer $0 has a modification time in the future ($s > $t).
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install.pm view on Meta::CPAN
# If the modification time is only slightly in the future,
# sleep briefly to remove the problem.
my $a = $s - time;
if ( $a > 0 and $a < 5 ) { sleep 5 }
# Too far in the future, throw an error.
my $t = time;
if ( $s > $t ) { die <<"END_DIE" }
Your installer $0 has a modification time in the future ($s > $t).
view all matches for this distribution
view release on metacpan or search on metacpan
1.000010 2018-01-04
- Require the latest WebService::PivotalTracker, which is needed to include
the PT requester's name without throwing an exception.
- Don't die if optional git configuration keys aren't present.
1.000009 2018-01-04
view all matches for this distribution
view release on metacpan or search on metacpan
script/_genpass-id view on Meta::CPAN
# $self->die('YAML_PARSE_ERR_BAD_CHARS')
# if $self->stream =~ /$ESCAPE_CHAR/;
# $self->{stream} =~ s/(.)\n\Z/$1/s;
# $self->lines([split /\x0a/, $self->stream, -1]);
# $self->line(1);
# $self->_parse_throwaway_comments();
# $self->document(0);
# $self->documents([]);
# if (not $self->eos) {
# if ($self->lines->[0] !~ /^---(\s|$)/) {
# unshift @{$self->lines}, '---';
script/_genpass-id view on Meta::CPAN
# $node =~ s/\n*\Z/\n/;
# $node =~ s/\n\Z// if $chomp eq '-';
# return $node;
#}
#
#sub _parse_throwaway_comments {
# my $self = shift;
# while (@{$self->lines} and
# $self->lines->[0] =~ m{^\s*(\#|$)}
# ) {
# shift @{$self->lines};
script/_genpass-id view on Meta::CPAN
# }
# $offset = $self->offset->[++$level];
# }
# elsif ($type == COLLECTION and
# $self->preface =~ /^(\s*(\!\S*|\&\S+))*\s*$/) {
# $self->_parse_throwaway_comments();
# if ($self->eos) {
# $self->offset->[$level+1] = $offset + 1;
# return;
# }
# else {
script/_genpass-id view on Meta::CPAN
# $self->{line}++;
# }
# $self->eos($self->{done} = not @{$self->lines});
# }
# else {
# $self->_parse_throwaway_comments();
# }
# return if $self->eos;
#
# if ($self->lines->[0] =~ /^---(\s|$)/) {
# $self->done(1);
view all matches for this distribution
view release on metacpan or search on metacpan
script/_genpass-wordlist view on Meta::CPAN
# $self->die('YAML_PARSE_ERR_BAD_CHARS')
# if $self->stream =~ /$ESCAPE_CHAR/;
# $self->{stream} =~ s/(.)\n\Z/$1/s;
# $self->lines([split /\x0a/, $self->stream, -1]);
# $self->line(1);
# $self->_parse_throwaway_comments();
# $self->document(0);
# $self->documents([]);
# if (not $self->eos) {
# if ($self->lines->[0] !~ /^---(\s|$)/) {
# unshift @{$self->lines}, '---';
script/_genpass-wordlist view on Meta::CPAN
# $node =~ s/\n*\Z/\n/;
# $node =~ s/\n\Z// if $chomp eq '-';
# return $node;
#}
#
#sub _parse_throwaway_comments {
# my $self = shift;
# while (@{$self->lines} and
# $self->lines->[0] =~ m{^\s*(\#|$)}
# ) {
# shift @{$self->lines};
script/_genpass-wordlist view on Meta::CPAN
# }
# $offset = $self->offset->[++$level];
# }
# elsif ($type == COLLECTION and
# $self->preface =~ /^(\s*(\!\S*|\&\S+))*\s*$/) {
# $self->_parse_throwaway_comments();
# if ($self->eos) {
# $self->offset->[$level+1] = $offset + 1;
# return;
# }
# else {
script/_genpass-wordlist view on Meta::CPAN
# $self->{line}++;
# }
# $self->eos($self->{done} = not @{$self->lines});
# }
# else {
# $self->_parse_throwaway_comments();
# }
# return if $self->eos;
#
# if ($self->lines->[0] =~ /^---(\s|$)/) {
# $self->done(1);
view all matches for this distribution
view release on metacpan or search on metacpan
- POD fix.
(Tim Heaney)
2.03 03.08.11
(this release, as the previous, are due to Neil Bowers, so thanks!)
- Using readable with special now throws an exception. Added in docs.
- Typo in POD.
2.02 03.08.11
- RT #69980: clarify the usage of default number of passwords in
generate() method. (reported by Neil Bowers, thanks!)
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/GhaInstall/JSON.pm view on Meta::CPAN
# Value
$$valueref = _decode_value();
# Leftover data
return m/\G[\x20\x09\x0a\x0d]*\z/gc || _throw('Unexpected data');
} ? return undef : chomp $@;
return $@;
}
lib/App/GhaInstall/JSON.pm view on Meta::CPAN
# End
last if m/\G[\x20\x09\x0a\x0d]*\]/gc;
# Invalid character
_throw('Expected comma or right square bracket while parsing array');
}
return \@array;
}
lib/App/GhaInstall/JSON.pm view on Meta::CPAN
my %hash;
until (m/\G[\x20\x09\x0a\x0d]*\}/gc) {
# Quote
m/\G[\x20\x09\x0a\x0d]*"/gc
or _throw('Expected string while parsing object');
# Key
my $key = _decode_string();
# Colon
m/\G[\x20\x09\x0a\x0d]*:/gc
or _throw('Expected colon while parsing object');
# Value
$hash{$key} = _decode_value();
# Separator
lib/App/GhaInstall/JSON.pm view on Meta::CPAN
# End
last if m/\G[\x20\x09\x0a\x0d]*\}/gc;
# Invalid character
_throw('Expected comma or right curly bracket while parsing object');
}
return \%hash;
}
lib/App/GhaInstall/JSON.pm view on Meta::CPAN
m!\G((?:(?:[^\x00-\x1f\\"]|\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4})){0,32766})*)!gc; # segfault on 5.8.x in t/20-mojo-json.t
my $str = $1;
# Invalid character
unless (m/\G"/gc) {
_throw('Unexpected character or invalid escape while parsing string')
if m/\G[\x00-\x1f\\]/;
_throw('Unterminated string');
}
# Unescape popular characters
if (index($str, '\\u') < 0) {
$str =~ s!\\(["\\/bfnrt])!$ESCAPE{$1}!gs;
lib/App/GhaInstall/JSON.pm view on Meta::CPAN
# Surrogate pair
if (($ord & 0xf800) == 0xd800) {
# High surrogate
($ord & 0xfc00) == 0xd800
or pos($_) = $pos + pos($str), _throw('Missing high-surrogate');
# Low surrogate
$str =~ m/\G\\u([Dd][C-Fc-f]..)/gc
or pos($_) = $pos + pos($str), _throw('Missing low-surrogate');
$ord = 0x10000 + ($ord - 0xd800) * 0x400 + (hex($1) - 0xdc00);
}
# Character
lib/App/GhaInstall/JSON.pm view on Meta::CPAN
# Null
return undef if m/\Gnull/gc; ## no critic (return)
# Invalid character
_throw('Expected string, array, object, number, boolean or null');
}
sub _encode_array {
'[' . join(',', map { _encode_value($_) } @{$_[0]}) . ']';
}
lib/App/GhaInstall/JSON.pm view on Meta::CPAN
# String
return _encode_string($value);
}
sub _throw {
# Leading whitespace
m/\G[\x20\x09\x0a\x0d]*/gc;
# Context
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/Git/Workflow/Command/Take.pm view on Meta::CPAN
git-take-mine [option] [path_or_file]
OPTIONS:
-q --quiet Suppress notifying of files changed
--ours Take choanges from current branch throwing away other branches changes
--theirs Take changes from merging branch throwing away current branches changes
-v --verbose Show more detailed option
--VERSION Prints the version information
--help Prints this help information
--man Prints the full documentation for git-take-mine
view all matches for this distribution
view release on metacpan or search on metacpan
Converted git-up-to-date (Ivan Wills)
Got coverage to 99.3% (Ivan Wills)
Fixed bad remote definition (Ivan Wills)
Converted git-watch (Ivan Wills)
Converted git-feature (Ivan Wills)
Added test for thrown errors (Ivan Wills)
Changed order of run commands for clarity (Ivan Wills)
Converted git-files (Ivan Wills)
Added more information when errors occur (Ivan Wills)
Fixed checking wrong variable for STDERR test, cleaned up output (Ivan Wills)
Fixed bad execption catching (Ivan Wills)
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/GitFind/PathClassMicro.pm view on Meta::CPAN
Returns a list of the directory components of this file, followed by
the basename.
Note: unlike C<< $dir->components >>, this method currently does not
accept any arguments to select which elements of the list will be
returned. It may do so in the future. Currently it throws an
exception if such arguments are present.
=item $file->is_dir
lib/App/GitFind/PathClassMicro.pm view on Meta::CPAN
=item $file->slurp()
In a scalar context, returns the contents of C<$file> in a string. In
a list context, returns the lines of C<$file> (according to how C<$/>
is set) as a list. If the file can't be read, this method will throw
an exception.
If you want C<chomp()> run on each line of the file, pass a true value
for the C<chomp> or C<chomped> parameters:
lib/App/GitFind/PathClassMicro.pm view on Meta::CPAN
=item $file->spew( $content );
The opposite of L</slurp>, this takes a list of strings and prints them
to the file in write mode. If the file can't be written to, this method
will throw an exception.
The content to be written can be either an array ref or a plain scalar.
If the content is an array ref then each entry in the array will be
written to the file.
lib/App/GitFind/PathClassMicro.pm view on Meta::CPAN
my $fh = $file->open('r') or die "Can't read $file: $!";
...
}
If an error occurs when opening the directory (for instance, it
doesn't exist or isn't readable), C<next()> will throw an exception
with the value of C<$!>.
=item $dir->traverse( sub { ... }, @args )
Calls the given callback for the root, passing it a continuation
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/GitHooks/Hook.pm view on Meta::CPAN
# generating the method name to run.
my $method = 'run_' . $app->get_hook_name();
$method =~ s/-/_/g;
# Run the plugin method corresponding to this hook.
# If the plugin throws an exception, print the error message and consider
# the return code to be a failure.
my $return_code = try
{
return $plugin->$method(
app => $app,
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install.pm view on Meta::CPAN
# If the modification time is only slightly in the future,
# sleep briefly to remove the problem.
my $a = $s - time;
if ( $a > 0 and $a < 5 ) { sleep 5 }
# Too far in the future, throw an error.
my $t = time;
if ( $s > $t ) { die <<"END_DIE" }
Your installer $0 has a modification time in the future ($s > $t).
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install.pm view on Meta::CPAN
# If the modification time is only slightly in the future,
# sleep briefly to remove the problem.
my $a = $s - time;
if ( $a > 0 and $a < 5 ) { sleep 5 }
# Too far in the future, throw an error.
my $t = time;
if ( $s > $t ) { die <<"END_DIE" }
Your installer $0 has a modification time in the future ($s > $t).
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/Gitc/Its/Eventum.pm view on Meta::CPAN
$rc = eval { $issue->transition_status($from, $to) } if $to;
$status_exception = $@ if $@;
$issue->update;
$issue->live_updates;
};
die $@ if $@; # rethrow unexpected exceptions
if ( $status_exception ) {
die $status_exception
if $status_exception !~ m/('[^']+' is not a valid status name)/;
return "NOT CHANGING Eventum status: $1\n";
}
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/Greple/wordle/word_all.pm view on Meta::CPAN
thorn
those
three
threw
throb
throw
thrum
thumb
thump
thyme
tiara
view all matches for this distribution
view release on metacpan or search on metacpan
#missing: save connections
#error moving groups looses connection
#thrown a few boxes and arrows in an empty document
#keyboard short cut
transparent mode
show connectors connections
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install.pm view on Meta::CPAN
# If the modification time is only slightly in the future,
# sleep briefly to remove the problem.
my $a = $s - time;
if ( $a > 0 and $a < 5 ) { sleep 5 }
# Too far in the future, throw an error.
my $t = time;
if ( $s > $t ) { die <<"END_DIE" }
Your installer $0 has a modification time in the future ($s > $t).
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install.pm view on Meta::CPAN
# If the modification time is only slightly in the future,
# sleep briefly to remove the problem.
my $a = $s - time;
if ( $a > 0 and $a < 5 ) { sleep 5 }
# Too far in the future, throw an error.
my $t = time;
if ( $s > $t ) { die <<"END_DIE" }
Your installer $0 has a modification time in the future ($s > $t).
view all matches for this distribution
view release on metacpan or search on metacpan
t/01-basic.t view on Meta::CPAN
# Check we get an error message on missing input parameters
my $reporter;
can_ok ('App::HPGL2Cadsoft', qw(scaling_factor input_file output_file));
throws_ok { $reporter = App::HPGL2Cadsoft->new() } qr/Attribute .+ is required/, "Checking missing parameters";
throws_ok { $reporter = App::HPGL2Cadsoft->new(input_file => 't/stim/missing_file.hpgl') } qr/Could not open file .t\/stim\/missing_file.+/, "Checking missing file";
my $app = App::HPGL2Cadsoft->new(input_file => 't/stim/heart.hpgl');
ok $app, 'object created';
ok $app->isa('App::HPGL2Cadsoft'), 'and it is the right class';
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install.pm view on Meta::CPAN
# If the modification time is only slightly in the future,
# sleep briefly to remove the problem.
my $a = $s - time;
if ( $a > 0 and $a < 5 ) { sleep 5 }
# Too far in the future, throw an error.
my $t = time;
if ( $s > $t ) { die <<"END_DIE" }
Your installer $0 has a modification time in the future ($s > $t).
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/INIUtils.pm view on Meta::CPAN
summary => 'Modify file in-place',
schema => ['bool', is=>1],
description => <<'_',
Note that this can only be done if you specify an actual file and not STDIN.
Otherwise, an error will be thrown.
_
},
);
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/IODUtils.pm view on Meta::CPAN
summary => 'Modify file in-place',
schema => ['bool', is=>1],
description => <<'_',
Note that this can only be done if you specify an actual file and not STDIN.
Otherwise, an error will be thrown.
_
},
);
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install.pm view on Meta::CPAN
# If the modification time is only slightly in the future,
# sleep briefly to remove the problem.
my $a = $s - time;
if ( $a > 0 and $a < 5 ) { sleep 5 }
# Too far in the future, throw an error.
my $t = time;
if ( $s > $t ) { die <<"END_DIE" }
Your installer $0 has a modification time in the future ($s > $t).
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install.pm view on Meta::CPAN
# If the modification time is only slightly in the future,
# sleep briefly to remove the problem.
my $a = $s - time;
if ( $a > 0 and $a < 5 ) { sleep 5 }
# Too far in the future, throw an error.
my $t = time;
if ( $s > $t ) { die <<"END_DIE" }
Your installer $0 has a modification time in the future ($s > $t).
view all matches for this distribution
view release on metacpan or search on metacpan
icli 0.47 - Thu May 29 2014
* Remove autodie dependency, improve error messages
* Allow build-time specification of icinga paths
(perl Build.PL --icli-xyz-file=..., see README)
* Do not throw warnings when encountering empty contact groups
* Do not require --recheck when using --force-recheck
* Support --force-recheck with a host-only argument to immediately recheck
all services on a host (closses #15)
* Fix -lh not showing serviceless hosts (closes #14)
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install.pm view on Meta::CPAN
# If the modification time is only slightly in the future,
# sleep briefly to remove the problem.
my $a = $s - time;
if ( $a > 0 and $a < 5 ) { sleep 5 }
# Too far in the future, throw an error.
my $t = time;
if ( $s > $t ) { die <<"END_DIE" }
Your installer $0 has a modification time in the future ($s > $t).
view all matches for this distribution