view release on metacpan or search on metacpan
t/pms/Envolve.pm view on Meta::CPAN
is => 'rw',
);
sub get_tags {
my ($self, $first_name, %options) = @_;
my $command = ($first_name) ? $self->get_login_command($first_name, %options) : $self->get_logout_command;
my $html = q{
<script type="text/javascript">
envoSn=%s;
env_commandString="%s";
</script>
<script type="text/javascript" src="//d.envolve.com/env.nocache.js"></script>
};
return sprintf $html, $self->site_id, $command;
}
sub get_login_command {
my ($self, $first_name, %options) = @_;
my %params = ( fn => $first_name );
$params{ln} = $options{last_name} if exists $options{last_name};
$params{pic} = $options{picture_url} if exists $options{picture_url};
$params{admin} = 't' if exists $options{is_admin} && $options{is_admin};
return $self->sign_command_string(
$self->generate_command_string('login', %params)
);
}
sub get_logout_command {
my ($self) = @_;
return $self->sign_command_string(
$self->generate_command_string('logout')
);
}
sub generate_command_string {
my ($self, $command, %params) = @_;
t/pms/Envolve.pm view on Meta::CPAN
api_key => $key,
);
my $html = $chat->get_tags('Joe');
my $command = $chat->get_login_command('Joe');
=head1 DESCRIPTION
This is a Perl API for the Envolve L<http://www.envolve.com> chat system. If you'd like to see it in use, check out The Lacuna Expanse L<http://www.lacunaexpanse.com>. Currently Envolve has not exposed much functionality, but using this API will allo...
=head1 METHODS
=head2 new ( api_key => '111-xxx' )
t/pms/Envolve.pm view on Meta::CPAN
The API key provided by Envolve.
=back
=head2 get_login_command ( first_name , [ options ] )
Returns a signed login command string that can be used to log a user into a chat by calling some javascript.
<script type="text/javascript">
env_executeCommand(command_string_goes_here);
</script>
t/pms/Envolve.pm view on Meta::CPAN
=back
=back
=head2 get_logout_command ( )
Returns a signed logout command string that can be used to log a user out of a chat by calling some javascript.
<script type="text/javascript">
env_executeCommand(command_string_goes_here);
</script>
If you prefer you can just inline it into the web page using the C<get_tags> method and pass no params to it.
=head2 get_tags ( [ first_name, login_options, ] )
Returns some HTML tags that can be inlined into your web page to start the chat. If no parameters are passed in, then the user will be anonymous. If C<first_name> is passed in then the user will be authenticated.
=over
=item first_name
See C<get_login_command>
=item login_options
See C<get_login_command>
=back
view all matches for this distribution
view release on metacpan or search on metacpan
join eval tell rand reverse ord chr eval split xor
uc prototype eval lcfirst join chmod kill eval ref
split sprintf reverse times xor not eval and srand
tell sqrt formline eval ord lcfirst ucfirst length
glob gmtime exp defined caller or binmode log ord
abs lc sqrt study alarm split time or formline cos
ne rewinddir kill chdir reset prototype split sqrt
ord int localtime abs oct pack pop eq scalar print
telldir open unpack return and unlink write chroot
hex bless utime split chown split close rmdir join
exp fileno getc sleep redo glob mkdir stat ne pack
reverse getpwnam next lstat gethostent and getpgrp
eq log ord time xor chr undef and eval caller and
printf srand lstat chown chdir syscall open select
eq -w closedir sleep chr split and quotemeta reset
require ne closedir sleep chr undef or pack unpack
length splice shift umask readpipe pos xor defined
join system and die or do exit if defined require
hex defined undef or sprintf localtime cmp time or
abs time and undef and open exp getc fileno system
caller eof rewinddir readpipe splice shift defined
kill pop wantarray and readlink eof readpipe split
eval warn join study abs localtime oct log time or
reverse xor open 0; print chr ord while readline 0
,;print chr abs length time for cos length getppid
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/SDUM/Renew.pm view on Meta::CPAN
# Fase 3: Get main page
$res = $browser->get($1);
$res->is_success or die "Error reading from aleph.sdum.uminho.pt (Phase 3)\n";
$res->content =~ /href\=\"([^\"]+login-session)\"/
or die "Content not expected (Phase 4)\n";
# Fase 4: Get login form
$res = $browser->get($1);
$res->is_success or die "Error reading from aleph.sdum.uminho.pt (Phase 4)\n";
my @forms = HTML::Form->parse($res);
my $form = shift @forms;
$form->value('bor_id', $username);
$form->value('bor_verification', $password);
$res = $browser->request($form->click);
$res->is_success or die "Error submiting login form (Phase 4)\n";
# Fase 5: Get Area Pessoal Link
$res->content =~ /rea Pessoal/ or die "Content not expected (check username/password) (Phase 5)\n";
$res->content =~ /href\=\"([^\"]+bor\-info)\"/
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/SGABRIEL/Utils.pm view on Meta::CPAN
If your Modified Version has been derived from a Modified Version made
by someone other than you, you are nevertheless required to ensure that
your Modified Version complies with the requirements of this license.
This license does not grant you the right to use any trademark, service
mark, tradename, or logo of the Copyright Holder.
This license includes the non-exclusive, worldwide, free-of-charge
patent license to make, have made, use, offer to sell, sell, import and
otherwise transfer the Package with respect to any patent claims
licensable by the Copyright Holder that are necessarily infringed by the
view all matches for this distribution
view release on metacpan or search on metacpan
[DOCUMENTATION]
- Add a .gitignore file
- Changelog dates are better written as YYYY.MM.DD and probably ordered in
the other, descending, direction
Remark: I have decided to follow the ISO 8601 standard at
http://www.w3.org/TR/NOTE-datetime
- Just use a Makefile.PL and not a Build.PL the latter does not have any
view all matches for this distribution
view release on metacpan or search on metacpan
[DOCUMENTATION]
- Add a .gitignore file
- Changelog dates are better written as YYYY.MM.DD and probably ordered in
the other, descending, direction
Remark: I have decided to follow the ISO 8601 standard at
http://www.w3.org/TR/NOTE-datetime
- Just use a Makefile.PL and not a Build.PL the latter does not have any
view all matches for this distribution
view release on metacpan or search on metacpan
[DOCUMENTATION]
- Add a .gitignore file
- Changelog dates are better written as YYYY.MM.DD and probably ordered in
the other, descending, direction
Remark: I have decided to follow the ISO 8601 standard at
http://www.w3.org/TR/NOTE-datetime
- Just use a Makefile.PL and not a Build.PL the latter does not have any
view all matches for this distribution
view release on metacpan or search on metacpan
MANIFEST.SKIP view on Meta::CPAN
.travis.yml$
.iml$
examples/
build/
^\w+.list$
.bblog$
.base$
BB-Pass/
BB-Fail/
cover_db/
scrap\.pl
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/Schlong.pm view on Meta::CPAN
has username_length => ( is => 'ro', isa => Int, lazy_build => 1, documentation => q{self explanatory} );
has shell => ( is => 'ro', isa => Str, lazy_build => 1, documentation => q{self explanatory} );
has harddrive_size => ( is => 'ro', isa => Int, lazy_build => 1, documentation => q{self explanatory} );
has harddrive_used => ( is => 'ro', isa => Int, lazy_build => 1, documentation => q{self explanatory} );
has uptime => ( is => 'ro', isa => Any, lazy_build => 1, documentation => q{self explanatory} );
has users => ( is => 'ro', isa => Any, lazy_build => 1, documentation => q{The number of users logged in on the system} );
has cores => ( is => 'ro', isa => Any, lazy_build => 1, documentation => q{The Number of cores of this machine} );
has using_multiplex => ( is => 'ro', isa => Bool, lazy_build => 1, documentation => q{using screen or tmux});
has using_byobu => ( is => 'ro', isa => Bool, lazy_build => 1, documentation => q{using byobu as multiplexer frontend!} );
has using_tmux => ( is => 'ro', isa => Bool, lazy_build => 1, documentation => q{using tmux as multiplexer} );
has using_screen => ( is => 'ro', isa => Bool, lazy_build => 1, documentation => q{using screen as multiplexer} );
lib/Acme/Schlong.pm view on Meta::CPAN
Find good ways to calculate the following:
=back
* number of users logged in on the system (one user with 9 shells is 1 user.)
* harddisk size
* memory used
* swap used
* harddisk free space
* uptime in minutes
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/Scurvy/Whoreson/BilgeRat/Backend/insultserver.pm view on Meta::CPAN
adj currish milk-livered surly mammering ill-borne beef-witted tickle-brained
adj half-faced headless wayward rump-fed onion-eyed beslubbering villainous
adj lewd-minded cockered full-gorged rude-snouted crook-pated pribbling
adj dread-bolted fool-born puny fawning sheep-biting dankish goatish
adj weather-bitten knotty-pated malt-wormy saucyspleened motley-mind
adj it-fowling vassal-willed loggerheaded clapper-clawed frothy ruttish
adj clouted common-kissing pignutted folly-fallen plume-plucked flap-mouthed
adj swag-bellied dizzy-eyed gorbellied weedy reeky measled spur-galled mangled
adj impertinent bootless toad-spotted hasty-witted horn-beat yeasty
adj imp-bladdereddle-headed boil-brained tottering hedge-born hugger-muggered
adj elf-skinned
view all matches for this distribution
view release on metacpan or search on metacpan
CODE_OF_CONDUCT.md view on Meta::CPAN
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
CODE_OF_CONDUCT.md view on Meta::CPAN
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/Shining.pm view on Meta::CPAN
If your Modified Version has been derived from a Modified Version made
by someone other than you, you are nevertheless required to ensure that
your Modified Version complies with the requirements of this license.
This license does not grant you the right to use any trademark, service
mark, tradename, or logo of the Copyright Holder.
This license includes the non-exclusive, worldwide, free-of-charge
patent license to make, have made, use, offer to sell, sell, import and
otherwise transfer the Package with respect to any patent claims
licensable by the Copyright Holder that are necessarily infringed by the
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install/Fetch.pm view on Meta::CPAN
LWP::Simple::mirror($args{url}, $file);
}
elsif (eval { require Net::FTP; 1 }) { eval {
# use Net::FTP to get past firewall
my $ftp = Net::FTP->new($host, Passive => 1, Timeout => 600);
$ftp->login("anonymous", 'anonymous@example.com');
$ftp->cwd($path);
$ftp->binary;
$ftp->get($file) or (warn("$!\n"), return);
$ftp->quit;
} }
inc/Module/Install/Fetch.pm view on Meta::CPAN
unless ($fh->open("|$ftp -n")) {
warn "Couldn't open ftp: $!\n";
chdir $dir; return;
}
my @dialog = split(/\n/, <<"END_FTP");
open $host
user anonymous anonymous\@example.com
cd $path
binary
get $file $file
quit
END_FTP
foreach (@dialog) { $fh->print("$_\n") }
$fh->close;
} }
else {
warn "No working 'ftp' program available!\n";
chdir $dir; return;
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install/Fetch.pm view on Meta::CPAN
LWP::Simple::mirror($args{url}, $file);
}
elsif (eval { require Net::FTP; 1 }) { eval {
# use Net::FTP to get past firewall
my $ftp = Net::FTP->new($host, Passive => 1, Timeout => 600);
$ftp->login("anonymous", 'anonymous@example.com');
$ftp->cwd($path);
$ftp->binary;
$ftp->get($file) or (warn("$!\n"), return);
$ftp->quit;
} }
inc/Module/Install/Fetch.pm view on Meta::CPAN
unless ($fh->open("|$ftp -n")) {
warn "Couldn't open ftp: $!\n";
chdir $dir; return;
}
my @dialog = split(/\n/, <<"END_FTP");
open $host
user anonymous anonymous\@example.com
cd $path
binary
get $file $file
quit
END_FTP
foreach (@dialog) { $fh->print("$_\n") }
$fh->close;
} }
else {
warn "No working 'ftp' program available!\n";
chdir $dir; return;
view all matches for this distribution
view release on metacpan or search on metacpan
local/lib/perl5/Future.pm view on Meta::CPAN
# socket
->fail( $message, resolve => ... ) # a resolver (likely DNS) failure
# to resolve a hostname
By following this convention, a module remains consistent with other
C<Future>-based modules, and makes it easy for program logic to gracefully
handle and manage failures by use of the C<catch> method.
=head2 SUBCLASSING
This class easily supports being subclassed to provide extra behavior, such as
local/lib/perl5/Future.pm view on Meta::CPAN
I<Since version 0.09.>
A convenient wrapper around C<fail>. If the exception is a non-reference that
does not end in a linefeed, its value will be extended by the file and line
number of the caller, similar to the logic that C<die> uses.
Returns the C<$future>.
=cut
local/lib/perl5/Future.pm view on Meta::CPAN
This method is invoked internally by various methods that are about to save a
callback CODE reference supplied by the user, to be invoked later. The default
implementation simply returns the callback agument as-is; the method is
provided to allow users to provide extra behaviour. This can be done by
applying a method modifier of the C<around> kind, so in effect add a chain of
wrappers. Each wrapper can then perform its own wrapping logic of the
callback. C<$operation_name> is a string giving the reason for which the
callback is being saved; currently one of C<on_ready>, C<on_done>, C<on_fail>
or C<sequence>; the latter being used for all the sequence-returning methods.
This method is intentionally invoked only for CODE references that are being
local/lib/perl5/Future.pm view on Meta::CPAN
can provide some amount of context save and restore, to return the operating
environment for the callback back to what it was at the time it was saved.
For example, the following wrapper saves the value of a package variable at
the time the callback was saved, and restores that value at invocation time
later on. This could be useful for preserving context during logging in a
Future-based program.
our $LOGGING_CTX;
no warnings 'redefine';
my $orig = Future->can( "wrap_cb" );
*Future::wrap_cb = sub {
my $cb = $orig->( @_ );
my $saved_logging_ctx = $LOGGING_CTX;
return sub {
local $LOGGING_CTX = $saved_logging_ctx;
$cb->( @_ );
};
};
At this point, any code deferred into a C<Future> by any of its callbacks will
local/lib/perl5/Future.pm view on Meta::CPAN
In the C<then>-style case it is likely that this situation should be treated
as if C<$f1> had failed, perhaps with some special message. The C<else>-style
case is more complex, because it may be that the entire operation should still
fail, or it may be that the cancellation of C<$f1> should again be treated
simply as a special kind of failure, and the C<else> logic run as normal.
To be specific; in each case it is unclear what happens if the first future is
cancelled, while the second one is still waiting on it. The semantics for
"normal" top-down cancellation of C<$f2> and how it affects C<$f1> are already
clear and defined.
local/lib/perl5/Future.pm view on Meta::CPAN
solve this question, though that itself is further complicated by the
C<on_ready> handler and its variants.
It may simply be that a comprehensive useful set of cancellation semantics
can't be universally provided to cover all cases; and that some use-cases at
least would require the application logic to give extra information to its
C<Future> objects on how they should wire up the cancel propagation logic.
Both of these cancellation issues are still under active design consideration;
see the discussion on RT96685 for more information
(L<https://rt.cpan.org/Ticket/Display.html?id=96685>).
local/lib/perl5/Future.pm view on Meta::CPAN
=item *
"Futures advent calendar 2013"
L<http://leonerds-code.blogspot.co.uk/2013/12/futures-advent-day-1.html>
=back
=cut
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/Spinodal/Utils.pm view on Meta::CPAN
If your Modified Version has been derived from a Modified Version made
by someone other than you, you are nevertheless required to ensure that
your Modified Version complies with the requirements of this license.
This license does not grant you the right to use any trademark, service
mark, tradename, or logo of the Copyright Holder.
This license includes the non-exclusive, worldwide, free-of-charge
patent license to make, have made, use, offer to sell, sell, import and
otherwise transfer the Package with respect to any patent claims
licensable by the Copyright Holder that are necessarily infringed by the
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/Spork.pm view on Meta::CPAN
print 1;
spork(
sub {
sleep 5;
open my $log_fh, '>>', 'spork.log', or die "spork.log open failed: $!";
print {$log_fh} "I am spork hear me spoon\n";
close $log_fh;
},
) or die qq{Couldn't fork for spork: $!};
print 2;
This prints out "12" immediately and is done running, now if you tail -f spork.log you'll see "I am spork hear me spoon\n" get written to it 4 or 5 seconds later by the spork()ed process :)
spork() returns the PID of the spork()ed process so you can keep track of them and do what you need with it.
If it returns false then fork failed so you can:
lib/Acme/Spork.pm view on Meta::CPAN
# and handle requests as a server:
while(<$incoming_requests>) {
my $req_pid = spork(\&handle_request($_));
if($req_pid) {
spork(\&log_request($_), $req_pid)
or warn "Could not spork log request $req_pid: $!";
}
else {
warn "Could not spork request: $!";
}
}
view all matches for this distribution
view release on metacpan or search on metacpan
exclude_filename = LICENSE
exclude_filename = Makefile.PL
[PkgVersion]
[AutoPrereqs]
[GithubMeta]
[ChangelogFromGit]
[MetaYAML]
[MetaJSON]
[MakeMaker]
[ModuleBuild]
[ManifestSkip]
view all matches for this distribution
view release on metacpan or search on metacpan
docs/SubmittingPatches.pod view on Meta::CPAN
=head2 Commits:
=over 4
=item * make commits of logical units
=item * check for unnecessary whitespace with "git diff --check" before committing
=item * do not check in commented out code or unneeded files
docs/SubmittingPatches.pod view on Meta::CPAN
patches for discussion. Before the final merge, you may have to wait until
some of the dependent topics graduate to 'master', and rebase your work.
=back
To find the tip of a topic branch, run "git log --first-parent
master..pu" and look for the merge commit. The second parent of this
commit is the tip of the topic branch.
=head2 (1) Make separate commits for logically separate changes.
Unless your patch is really trivial, you should not be sending
out a patch that was generated between your working tree and
your commit head. Instead, always make a commit with complete
commit message and generate a series of patches from your
docs/SubmittingPatches.pod view on Meta::CPAN
not a text/plain, it's something else.
Unless your patch is a very trivial and an obviously correct one,
first send it with "To:" set to the RT email (or mailing list), with "cc:"
listing people who are involved in the area you are touching (the output from
"git blame $path" and "git shortlog --no-merges $path" would help to
identify them), to solicit comments and reviews. After the list
reached a consensus that it is a good idea to apply the patch, re-send
it with "To:" set to the maintainer and optionally "cc:" the list for
inclusion. Do not forget to add trailers such as "Acked-by:",
"Reviewed-by:" and "Tested-by:" after your "Signed-off-by:" line as
docs/SubmittingPatches.pod view on Meta::CPAN
E<10>
The people who may need to know are the ones whose
code you are butchering. These people happen to be the ones who are most
likely to be knowledgeable enough to help you, but they have no obligation to
help you (i.e. you ask for help, don't demand). "git log -p --
$area_you_are_modifying" would help you find out who they are.
=item 2. You get comments and suggestions for improvements. You may even
get them in a "on top of your change" patch form.
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install/Fetch.pm view on Meta::CPAN
LWP::Simple::mirror($args{url}, $file);
}
elsif (eval { require Net::FTP; 1 }) { eval {
# use Net::FTP to get past firewall
my $ftp = Net::FTP->new($host, Passive => 1, Timeout => 600);
$ftp->login("anonymous", 'anonymous@example.com');
$ftp->cwd($path);
$ftp->binary;
$ftp->get($file) or (warn("$!\n"), return);
$ftp->quit;
} }
inc/Module/Install/Fetch.pm view on Meta::CPAN
unless ($fh->open("|$ftp -n")) {
warn "Couldn't open ftp: $!\n";
chdir $dir; return;
}
my @dialog = split(/\n/, <<"END_FTP");
open $host
user anonymous anonymous\@example.com
cd $path
binary
get $file $file
quit
END_FTP
foreach (@dialog) { $fh->print("$_\n") }
$fh->close;
} }
else {
warn "No working 'ftp' program available!\n";
chdir $dir; return;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/Study/BLACKJ.pm view on Meta::CPAN
If your Modified Version has been derived from a Modified Version made
by someone other than you, you are nevertheless required to ensure that
your Modified Version complies with the requirements of this license.
This license does not grant you the right to use any trademark, service
mark, tradename, or logo of the Copyright Holder.
This license includes the non-exclusive, worldwide, free-of-charge
patent license to make, have made, use, offer to sell, sell, import and
otherwise transfer the Package with respect to any patent claims
licensable by the Copyright Holder that are necessarily infringed by the
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/Sub/Parms.pod view on Meta::CPAN
This is a powerful, but simultaneously very dangerous feature. Use
this ability with caution.
The callback must return either a true or a false value (not the
literal words 'true' or 'false' but something that evaluates to
a true or false logical value) and a string with an error message
(if a false value was returned.)
Callback function example:
# Checking if the field value is an integer
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install/Fetch.pm view on Meta::CPAN
LWP::Simple::mirror($args{url}, $file);
}
elsif (eval { require Net::FTP; 1 }) { eval {
# use Net::FTP to get past firewall
my $ftp = Net::FTP->new($host, Passive => 1, Timeout => 600);
$ftp->login("anonymous", 'anonymous@example.com');
$ftp->cwd($path);
$ftp->binary;
$ftp->get($file) or (warn("$!\n"), return);
$ftp->quit;
} }
inc/Module/Install/Fetch.pm view on Meta::CPAN
unless ($fh->open("|$ftp -n")) {
warn "Couldn't open ftp: $!\n";
chdir $dir; return;
}
my @dialog = split(/\n/, <<"END_FTP");
open $host
user anonymous anonymous\@example.com
cd $path
binary
get $file $file
quit
END_FTP
foreach (@dialog) { $fh->print("$_\n") }
$fh->close;
} }
else {
warn "No working 'ftp' program available!\n";
chdir $dir; return;
view all matches for this distribution
view release on metacpan or search on metacpan
Changelog for Acme-TLDR
0.004 2014-07-07T15:27:02
- Use both Module::CoreList & ExtUtils::Installed as modules source
(Stanislaw Pusep)
view all matches for this distribution
view release on metacpan or search on metacpan
LICENSE
MANIFEST
Makefile.PL
README.md
lib/Acme/TaintTest.pm
log/dummy
t/a1.t
t/a2.t
t/README
t/testrules.yml
t/log/dummy
META.yml Module YAML meta-data (added by MakeMaker)
META.json Module JSON meta-data (added by MakeMaker)
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install/Fetch.pm view on Meta::CPAN
LWP::Simple::mirror($args{url}, $file);
}
elsif (eval { require Net::FTP; 1 }) { eval {
# use Net::FTP to get past firewall
my $ftp = Net::FTP->new($host, Passive => 1, Timeout => 600);
$ftp->login("anonymous", 'anonymous@example.com');
$ftp->cwd($path);
$ftp->binary;
$ftp->get($file) or (warn("$!\n"), return);
$ftp->quit;
} }
inc/Module/Install/Fetch.pm view on Meta::CPAN
unless ($fh->open("|$ftp -n")) {
warn "Couldn't open ftp: $!\n";
chdir $dir; return;
}
my @dialog = split(/\n/, <<"END_FTP");
open $host
user anonymous anonymous\@example.com
cd $path
binary
get $file $file
quit
END_FTP
foreach (@dialog) { $fh->print("$_\n") }
$fh->close;
} }
else {
warn "No working 'ftp' program available!\n";
chdir $dir; return;
view all matches for this distribution
view release on metacpan or search on metacpan
Version made by someone other than you, you are nevertheless required
to ensure that your Modified Version complies with the requirements of
this license.
(12) This license does not grant you the right to use any trademark,
service mark, tradename, or logo of the Copyright Holder.
(13) This license includes the non-exclusive, worldwide,
free-of-charge patent license to make, have made, use, offer to sell,
sell, import and otherwise transfer the Package with respect to any
patent claims licensable by the Copyright Holder that are necessarily
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/Test/LogicalEquivalence.pm view on Meta::CPAN
package Acme::Test::LogicalEquivalence;
# ABSTRACT: Test if expressions are logically equivalent
# KEYWORDS: test logic
use 5.008;
use warnings;
use strict;
lib/Acme/Test/LogicalEquivalence.pm view on Meta::CPAN
use Exporter qw(import);
use Test::More;
use namespace::clean -except => [qw(import)];
our @EXPORT_OK = qw(is_logically_equivalent);
sub is_logically_equivalent {
my $numvars = shift;
my $sub1 = shift;
my $sub2 = shift;
my $equivalence = 1;
lib/Acme/Test/LogicalEquivalence.pm view on Meta::CPAN
=encoding UTF-8
=head1 NAME
Acme::Test::LogicalEquivalence - Test if expressions are logically equivalent
=head1 VERSION
version 0.001
=head1 SYNOPSIS
use Test::More;
use Acme::Test::LogicalEquivalence qw(is_logically_equivalent);
# test two expressions with 2 variables using the special vars $a and $b
is_logically_equivalent(2, sub { $a && $b }, sub { $b && $a });
# same as above
is_logically_equivalent(2, sub { $_[0] && $_[1] }, sub { $_[1] && $_[0] });
# you can do as many vars as you like
is_logically_equivalent(3, sub { $_[0] || ($_[1] && $_[2]) },
sub { ($_[0] || $_[1]) && ($_[0] || $_[2]) });
done_testing;
=head1 DESCRIPTION
Some expressions are "logically equivalent" to other expressions, but it may not be easy to tell if
one or both of the expressions are reasonably complicated. Or maybe you're like many other people
and are too lazy to go through the effort... Either way, why not let your computer prove logical
equivalence for you?
=head1 FUNCTIONS
=head2 is_logically_equivalent
Test logical equivalence of two subroutines.
my $is_equivalent = is_logically_equivalent($numvars, &sub1, &sub2);
This will execute both of the subroutines one or more times (depending on how many variables you
specify) with different inputs. The subroutines shall be considered logically equivalent if, for all
combinations of inputs, they both return the same thing.
Returns true if the subroutines are logically equivalent, false otherwise.
=head1 SEE ALSO
=over 4
=item *
What is logical equivalence? Start here: L<https://en.wikipedia.org/wiki/Logical_equivalence>
=back
=head1 AUTHOR
view all matches for this distribution
view release on metacpan or search on metacpan
The name and version of the module you were trying to build.
=item 4.
A full log of the build that failed.
=item 5.
Any other information that you think could be relevant.
memEQs|5.009005||p
memEQ|5.004000||p
memNEs|5.009005||p
memNE|5.004000||p
mem_collxfrm|||
mem_log_common|||n
mess_alloc|||
mess_nocontext|||vn
mess_sv||5.013001|
mess||5.006000|v
mfree||5.007002|n
newXS||5.006000|
new_collate||5.006000|
new_constant|||
new_ctype||5.006000|
new_he|||
new_logop|||
new_numeric||5.006000|
new_stackinfo||5.005000|
new_version||5.009000|
new_warnings_bitfield|||
next_symbol|||
whichsig|||
win32_croak_not_implemented|||n
with_queued_errors|||
wrap_op_checker||5.015008|
write_to_stderr|||
xs_boot_epilog|||
xs_handshake|||vn
xs_version_bootcheck|||
yyerror_pvn|||
yyerror_pv|||
yyerror|||
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install/Fetch.pm view on Meta::CPAN
LWP::Simple::mirror($args{url}, $file);
}
elsif (eval { require Net::FTP; 1 }) { eval {
# use Net::FTP to get past firewall
my $ftp = Net::FTP->new($host, Passive => 1, Timeout => 600);
$ftp->login("anonymous", 'anonymous@example.com');
$ftp->cwd($path);
$ftp->binary;
$ftp->get($file) or (warn("$!\n"), return);
$ftp->quit;
} }
inc/Module/Install/Fetch.pm view on Meta::CPAN
unless ($fh->open("|$ftp -n")) {
warn "Couldn't open ftp: $!\n";
chdir $dir; return;
}
my @dialog = split(/\n/, <<"END_FTP");
open $host
user anonymous anonymous\@example.com
cd $path
binary
get $file $file
quit
END_FTP
foreach (@dialog) { $fh->print("$_\n") }
$fh->close;
} }
else {
warn "No working 'ftp' program available!\n";
chdir $dir; return;
view all matches for this distribution