view release on metacpan or search on metacpan
lib/Acme/CPANModules/Frameworks.pm view on Meta::CPAN
our $DATE = '2022-11-29'; # DATE
our $DIST = 'Acme-CPANModules-Frameworks'; # DIST
our $VERSION = '0.002'; # VERSION
our $LIST = {
summary => "List of frameworks on CPAN",
description => <<'_',
What qualifies as a framewor to be listed here is the existence of ecosystem of
CPAN modules/distributions (plugins, extensions, even application distributions,
etc) pertaining to it.
This list is used in building a list of framework classifiers in
<pm:Module::Features::PerlTrove>.
_
entries => [
# acme
lib/Acme/CPANModules/Frameworks.pm view on Meta::CPAN
{module=>'HTML::FormHandler', tags=>['category:web-form']},
],
};
1;
# ABSTRACT: List of frameworks on CPAN
__END__
=pod
=encoding UTF-8
=head1 NAME
Acme::CPANModules::Frameworks - List of frameworks on CPAN
=head1 VERSION
This document describes version 0.002 of Acme::CPANModules::Frameworks (from Perl distribution Acme-CPANModules-Frameworks), released on 2022-11-29.
=head1 DESCRIPTION
What qualifies as a framewor to be listed here is the existence of ecosystem of
CPAN modules/distributions (plugins, extensions, even application distributions,
etc) pertaining to it.
This list is used in building a list of framework classifiers in
L<Module::Features::PerlTrove>.
=head1 ACME::CPANMODULES ENTRIES
=over
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/HaveWebsite.pm view on Meta::CPAN
entries => [
{module=>'App::Ack', website_url=>'https://beyondgrep.com/'},
{module=>'App::cpanminus', website_url=>'http://cpanmin.us/'},
{module=>'App::perlbrew', website_url=>'https://perlbrew.pl/'},
{module=>'App::TimeTracker', website_url=>'http://timetracker.plix.at/'},
{module=>'Catalyst', website_url=>'http://www.catalystframework.org/'},
{module=>'Dancer', website_url=>'https://perldancer.org/'},
{module=>'Giblog', website_url=>'https://www.giblog.net/', description=>'Currently in Japanese only'},
{module=>'Mojolicious', website_url=>'https://mojolicious.org/'},
{module=>'MooX::Role::JSON_LD', website_url=>'https://davorg.dev/moox-role-json_ld/'},
{module=>'Padre', website_url=>'http://padre.perlide.org/'},
lib/Acme/CPANModules/HaveWebsite.pm view on Meta::CPAN
=item L<Catalyst>
Author: L<JJNAPIORK|https://metacpan.org/author/JJNAPIORK>
Website URL: L<http://www.catalystframework.org/>
=item L<Dancer>
Author: L<YANICK|https://metacpan.org/author/YANICK>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/Import/CPANRatings/User/davidgaramond.pm view on Meta::CPAN
our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
our $DATE = '2023-10-29'; # DATE
our $DIST = 'Acme-CPANModules-Import-CPANRatings-User-davidgaramond'; # DIST
our $VERSION = '0.002'; # VERSION
our $LIST = {description=>"This list is generated by scraping CPANRatings (cpanratings.perl.org) user page.",entries=>[{description=>"\nOk, it's not 2004 anymore, I suggest we retire or start to deprecate this module? This module now requires Perl 5....
1;
# ABSTRACT: List of modules mentioned by CPANRatings user davidgaramond
__END__
lib/Acme/CPANModules/Import/CPANRatings/User/davidgaramond.pm view on Meta::CPAN
=item L<Test::Unit>
Author: L<MCAST|https://metacpan.org/author/MCAST>
Test::Unit is of course a fine module. But if you are shopping around for testing framework, I recommend you try Test::Class instead, which combines the best of two worlds. First, you get xUnit style, but I think with a slightly simpler interface. Se...
Rating: 8/10
=item L<Module::Build>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
our $DATE = '2023-10-29'; # DATE
our $DIST = 'Acme-CPANModules-Import-CPANRatings-User-stevenharyanto'; # DIST
our $VERSION = '0.002'; # VERSION
our $LIST = {description=>"This list is generated by scraping CPANRatings (cpanratings.perl.org) user page.",entries=>[{description=>"\n(REMOVED)\n",module=>"Log::Any",rating=>undef},{description=>"\nProvides a thin/lightweight OO interface for \$?, ...
1;
# ABSTRACT: List of modules mentioned by CPANRatings user stevenharyanto
__END__
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
=item L<App::Trace>
Author: L<SPADKINS|https://metacpan.org/author/SPADKINS>
The name and abstract is slightly inaccurate/misleading. This module is supposed to be a general logging framework instead of just subroutine entry/exit tracer. For alternative subroutine tracer, I'd recommend Devel::TraceSubs or Devel::TraceCalls (o...
<br><br>Not very convenient to use. It still requires you to put 'if $App::Trace' clause everytime. For general logging that can be switched on/off upon runtime, I'd recommend using Log::Any instead.
<br><br>Lastly, this module is tied to App::Options and thus only really usable if you use both.
=item L<Tie::Hash::Identity>
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
=item L<App::Options>
Author: L<SPADKINS|https://metacpan.org/author/SPADKINS>
2010-10-13:
<br><br>I admit, this is not the most flexible configuration framework out there as it enforces some convention. And I don't/can't use it on every project. But it's certainly one of the easiest. You can slap a few lines of options declaration in your...
<br><br>There are still a few annoyances (I submitted them in the RT), but in general, this is a very handy module to use for lazy coders who just want to accept configuration/options from outside the code.
<br><br><shameless plug>I'm trying to do somewhat the same with Config::Tree, but as of now the module is not really done yet.</shameless plug>
<br><br>UPDATE 2013-08-15:
<br><br>I'm reducing the ratings from 5 to 2. I've now avoided using this module due to two lingering issue since 2010: 1) App::Options does not accept '--opt val', only '--opt=val' which is incompatible with how most command-line programs work, caus...
<br><br>I'm now using Perinci::CmdLine as replacement, but I cannot recommend it in general, as the two modules are not equivalent.
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
=item L<Filesys::Notify::Simple>
Author: L<MIYAGAWA|https://metacpan.org/author/MIYAGAWA>
It's rather unfortunate that currently the choice for general purpose cross-platform filesystem notification modules on CPAN falls between this module (FNS) or File::ChangeNotify (F::CN). The other CPAN modules are either OS-/framework-specific.
<br><br>FNS has a simple API but is perhaps too simple for some uses, while F::CN uses Moose and has a big startup overhead.
<br><br>If you simply want to check from time to time whether a change has occured, you need to wrap the wait() method with alarm(). And I found on my Linux PC that I need a timeout of at least 3 seconds for this to work reliably.
Rating: 8/10
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
=item L<CHI>
Author: L<ASB|https://metacpan.org/author/ASB>
The DBI of caching. Stop reinventing your caching framework and just use this.
<br><br>UPDATE 2013-01-16: unfortunately, the use of Moose reduces the usefulness of CHI for command-line scripts (0.2s/146 files/53k lines startup overhead just to initialize a File cache). So 4 stars instead of 5. Let's hope the author migrates to ...
<br>
Rating: 8/10
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
=item L<Log::AutoDump>
Author: L<CAGAO|https://metacpan.org/author/CAGAO>
This module is simple and to the point. Unfortunately, if you're a user of Log4perl or other logging framework, you'll have to switch just for a single feature (autodumping).
<br><br>An alternative is to use Log::Any, which also features autodumping (via $log->debugf("%s", $complex), $log->warnf(), and friends), while still allowing you to use Log4perl and other frameworks supported by Log::Any.
<br><br>
=item L<List::Pairwise>
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
=item L<Log::Log4perl>
Author: L<ETJ|https://metacpan.org/author/ETJ>
It's a very mature and an excellent logging framework. However, some of the common minor complaints are: 1) It's too complex. I agree: it should not be this hard to get started. 2) Configuration is too verbose. Agreed: but well, what can you do, most...
<br><br>One of the main strengths of Log4perl is its sublogger/subcategory feature, which few other frameworks seem to have.
<br><br>For other alternatives, also take a look at: Log::Handler, Log::Any. And of course Log::Message too.
<br>
=item L<Log::Handler>
Author: L<BLOONIX|https://metacpan.org/author/BLOONIX>
This review mostly compares Log::Handler with Log4perl, which is a mature and one of the most popular logging frameworks.
<br><br>I think Log::Handler's interface is much simpler, nicer, more Perlish than Log4perl. It's a bit similar to Log::Any::App, which I created just because I hate Log4perl configuration.
<br><br>There is a unique concept of maxlevel not normally found in other frameworks, though it can be emulated in other frameworks using filters.
<br><br>At a quick glance, the speed is around twice that of Log::Log4perl, so I'll say it's on the low-end side (there are other much faster logging modules, but anyway speed is not an issue to most people).
<br><br>It currently lacks sublogger (hierarchical categorization and adjustable/automatic appending of subcategory to its parent), so it cannot be used to replace Log4perl in most cases as that's one of the main feature of Log4perl. Which is a pity ...
Rating: 8/10
=item L<Log::Fast>
Author: L<POWERMAN|https://metacpan.org/author/POWERMAN>
This logging framework is also minimalistic: no categories/hierarchiecal loggers, no custom levels, no config file, or other whistles and bells. And the interface & default levels are rather syslog-oriented. But it's fast alright. The POD doesn't...
<br><br>So this module will certainly come handy if you have a performance critical application.
<br><br>Btw, note that the benchmarks are done for actual logging to output. For log statements that do not actually get logged (e.g. because the level is below the desired output level), I don't find that extreme differences in overhead between log...
=item L<Log::Minimal>
Author: L<KAZEBURO|https://metacpan.org/author/KAZEBURO>
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
=item L<Log::Fine>
Author: L<CFUHRMAN|https://metacpan.org/author/CFUHRMAN>
Log::Fine is touted as a framework for those who "need a fine-grained logging mechanism in their program(s)". But apart from the emphasis on custom levels, to me there is nothing extra fine-grained about it. The other thing it provides is c...
<br><br>Btw regarding custom levels, this practice is long deprecated by log4j (and thus also by Log4perl, although Log4perl can do custom levels). I can understand this decision as I sometimes already have trouble managing the popular convention of ...
Rating: 6/10
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/LoadingModules.pm view on Meta::CPAN
**Preventing loading certain modules**
<pm:lib::filter>, <pm:lib::disallow>
**Require hook frameworks**
These frameworks let you create require hook more easily.
<pm:Require::Hook>
<pm:Require::Hook::More>
lib/Acme/CPANModules/LoadingModules.pm view on Meta::CPAN
B<Preventing loading certain modules>
L<lib::filter>, L<lib::disallow>
B<Require hook frameworks>
These frameworks let you create require hook more easily.
L<Require::Hook>
L<Require::Hook::More>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/NonMooseStyleClassBuilder.pm view on Meta::CPAN
See also a whole host of Class::Accessor::* modules.
_
entries => [
{module => 'Class::Meta::AccessorBuilder',
summary=>'Part of the Class::Meta framework'},
{module => 'Class::Struct'},
{module => 'Class::Builder'},
{module => 'Class::GenSource',
summary=>'This is more like code generator, it generates Perl code source for the entire class definition, not just accessors'},
{module => 'Object::Declare'},
lib/Acme/CPANModules/NonMooseStyleClassBuilder.pm view on Meta::CPAN
=over
=item L<Class::Meta::AccessorBuilder>
Part of the Class::Meta framework.
Author: L<DWHEELER|https://metacpan.org/author/DWHEELER>
=item L<Class::Struct>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/PERLANCAR/PluginSystem.pm view on Meta::CPAN
our $DATE = '2023-07-23'; # DATE
our $DIST = 'Acme-CPANModules-PERLANCAR-PluginSystem'; # DIST
our $VERSION = '0.002'; # VERSION
our $LIST = {
summary => 'List of my modules/frameworks which use a particular plugin system style',
description => <<'_',
This is a personal list of my modules/frameworks which use a particular plugin
system style which I will someday extract into its own framework
(<pm:Plugin::System>). (And I am also slowly converting more of my
plugin-supporting projects to use this style). Some of the features of this
particular plugin style:
* a plugin can be installed more than once and parameterized (like in <pm:Dist::Zilla> or <pm:Pod::Weaver>) [flexibility];
lib/Acme/CPANModules/PERLANCAR/PluginSystem.pm view on Meta::CPAN
{
module => "ScriptX",
description => <<'_',
Started in late 2019, this is the first framework where the I thought out the
rough feature set that I want. ScriptX was written to eventually replace
<pm:Perinci::CmdLine>: I want a framework that can be used to write web
scripts/form handlers as well as CLI scripts, with more flexibility in composing
behavior/functionality (i.e. plugin-based). But turns out I haven't had enough
time to hack on it, and making CLI scripts are 99% of what I use Perl for; thus
Perinci::CmdLine lives on for now (with plugins since 1.900).
lib/Acme/CPANModules/PERLANCAR/PluginSystem.pm view on Meta::CPAN
{
module => "Perinci::CmdLine::Lite",
description => <<'_',
While waiting for <pm:ScriptX> to get into a usable form, I implemented a
similar system to my CLI framework, <pm:Perinci::CmdLine> starting from 1.900
(released in Oct 2020).
_
},
{
module => "Require::HookPlugin",
description => <<'_',
Another project where I implemented the same plugin system to a require hook
framework. Require::HookPlugin (RHP) was started in July 2023 because I found
hook ordering in <pm:Require::HookChain> (RHC) to be fragile and error-prone.
Plus, I want more customizability and composability than what RHC provides.
_
},
],
};
1;
# ABSTRACT: List of my modules/frameworks which use a particular plugin system style
__END__
=pod
=encoding UTF-8
=head1 NAME
Acme::CPANModules::PERLANCAR::PluginSystem - List of my modules/frameworks which use a particular plugin system style
=head1 VERSION
This document describes version 0.002 of Acme::CPANModules::PERLANCAR::PluginSystem (from Perl distribution Acme-CPANModules-PERLANCAR-PluginSystem), released on 2023-07-23.
=head1 DESCRIPTION
This is a personal list of my modules/frameworks which use a particular plugin
system style which I will someday extract into its own framework
(L<Plugin::System>). (And I am also slowly converting more of my
plugin-supporting projects to use this style). Some of the features of this
particular plugin style:
=over
lib/Acme/CPANModules/PERLANCAR/PluginSystem.pm view on Meta::CPAN
=item L<ScriptX>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
Started in late 2019, this is the first framework where the I thought out the
rough feature set that I want. ScriptX was written to eventually replace
L<Perinci::CmdLine>: I want a framework that can be used to write web
scripts/form handlers as well as CLI scripts, with more flexibility in composing
behavior/functionality (i.e. plugin-based). But turns out I haven't had enough
time to hack on it, and making CLI scripts are 99% of what I use Perl for; thus
Perinci::CmdLine lives on for now (with plugins since 1.900).
lib/Acme/CPANModules/PERLANCAR/PluginSystem.pm view on Meta::CPAN
=item L<Perinci::CmdLine::Lite>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
While waiting for L<ScriptX> to get into a usable form, I implemented a
similar system to my CLI framework, L<Perinci::CmdLine> starting from 1.900
(released in Oct 2020).
=item L<Require::HookPlugin>
Another project where I implemented the same plugin system to a require hook
framework. Require::HookPlugin (RHP) was started in July 2023 because I found
hook ordering in L<Require::HookChain> (RHC) to be fragile and error-prone.
Plus, I want more customizability and composability than what RHC provides.
=back
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/PortedFrom/Ruby.pm view on Meta::CPAN
tags => ['web'],
#ruby_package => undef,
},
{
module => 'Plack',
tags => ['web', 'framework'],
description => <<'_',
From Plack's documentation: "Plack is like Ruby's Rack or Python's Paste for
WSGI." Plack and PSGI were created by MIYAGAWA in 2009 and were inspired by both
Python's WSGI specification (hence the dual specification-implementation split)
lib/Acme/CPANModules/PortedFrom/Ruby.pm view on Meta::CPAN
ruby_website_url => 'https://rack.github.io/',
ruby_github_url => 'https://github.com/rack/rack',
},
{
module => 'Squatting',
tags => ['web', 'framework'],
ruby_package => 'camping',
ruby_website_url => 'http://www.ruby-camping.com/',
},
{
module => 'Valiant',
summary => 'Inspired by the data validation style in Ruby on Rails',
tags => ['validation', 'framework'],
ruby_package => 'rails',
ruby_website_url => 'https://rubyonrails.org/',
},
{
module => 'Dotenv',
summary => 'Although the 12-factor methodology is not tied to a single language, the original implementation is in Ruby',
#tags => ['framework'],
ruby_package => 'dotenv',
ruby_website_url => 'https://github.com/heroku/12factor',
},
],
};
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/RandomPerson.pm view on Meta::CPAN
Thai, Viking. At the time of this writing (v0.60), there are 140 English female
first names to choose from, 130 English male first names, and 1003 English last
names.
The <pm:Mock::Person> namespace contains several modules to generate random
person names. The modules here are not exactly part of a single framework so the
interface might slightly differ from one another: <pm:Mock::Person::CZ> (Czech),
<pm:Mock::Person::DE> (German), <pm:Mock::Person::EN> (English),
<pm:Mock::Person::ID> (Indonesian), <pm:Mock::Person::JP> (Japanese),
<pm:Mock::Person::JV> (Javanese), <pm:Mock::Person::RU> (Russian),
<pm:Mock::Person::SK> (Slovak), <pm:Mock::Person::SK::ROM> (Romani),
<pm:Mock::Person::SV> (Swedish), <pm:Mock::Person::US> (American).
<pm:Data::Faker> is a plugin-based framework to generate random person name,
company name, phone number, street address, email, domain name, IP address, and
so on. The included name plugin only generates English names and there is no
option to pick male/female. At the time of this writing (v0.10), there are 474
last names and 3007 first names. It can also add suffixes like II, III, Jr.,
Sr.
lib/Acme/CPANModules/RandomPerson.pm view on Meta::CPAN
Thai, Viking. At the time of this writing (v0.60), there are 140 English female
first names to choose from, 130 English male first names, and 1003 English last
names.
The L<Mock::Person> namespace contains several modules to generate random
person names. The modules here are not exactly part of a single framework so the
interface might slightly differ from one another: L<Mock::Person::CZ> (Czech),
L<Mock::Person::DE> (German), L<Mock::Person::EN> (English),
L<Mock::Person::ID> (Indonesian), L<Mock::Person::JP> (Japanese),
L<Mock::Person::JV> (Javanese), L<Mock::Person::RU> (Russian),
L<Mock::Person::SK> (Slovak), L<Mock::Person::SK::ROM> (Romani),
L<Mock::Person::SV> (Swedish), L<Mock::Person::US> (American).
L<Data::Faker> is a plugin-based framework to generate random person name,
company name, phone number, street address, email, domain name, IP address, and
so on. The included name plugin only generates English names and there is no
option to pick male/female. At the time of this writing (v0.10), there are 474
last names and 3007 first names. It can also add suffixes like II, III, Jr.,
Sr.
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/Roles.pm view on Meta::CPAN
Roles are a way to write classes by composing them from simpler components,
instead of using inheritance from parent classes.
The Perl core does not provide a role mechanism for you, but there are several
role frameworks you can choose in Perl. This list orders them from the most
lightweight.
<pm:Role::Tiny>. Basic role support plus method modifiers (`before`, `after`,
`around`).
lib/Acme/CPANModules/Roles.pm view on Meta::CPAN
Roles are a way to write classes by composing them from simpler components,
instead of using inheritance from parent classes.
The Perl core does not provide a role mechanism for you, but there are several
role frameworks you can choose in Perl. This list orders them from the most
lightweight.
L<Role::Tiny>. Basic role support plus method modifiers (C<before>, C<after>,
C<around>).
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/SQLite.pm view on Meta::CPAN
our $VERSION = '0.001'; # VERSION
my $text = <<'_';
**Drivers**
<pm:DBD::SQLite> is a driver for <pm:DBI> framework.
Alternative APIs: <pm:Mojo::SQLite> (wrapper to DBD::SQLite).
**DBI helpers**
lib/Acme/CPANModules/SQLite.pm view on Meta::CPAN
=head1 DESCRIPTION
B<Drivers>
L<DBD::SQLite> is a driver for L<DBI> framework.
Alternative APIs: L<Mojo::SQLite> (wrapper to DBD::SQLite).
B<DBI helpers>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/WorkingWithCSV.pm view on Meta::CPAN
<pm:Text::CSV> (as well as <pm:Text::CSV_XS>) can render a line of CSV from Perl
array(ref) with their `say()` method.
<prog:dd2csv> from <pm:App::CSVUtils>
<pm:Perinci::CmdLine> framework can render function result (CLI output) as CSV.
**Converting to/from other formats**
*INI*: <prog:ini2csv> from <pm:App::TextTableUtils>
lib/Acme/CPANModules/WorkingWithCSV.pm view on Meta::CPAN
L<Text::CSV> (as well as L<Text::CSV_XS>) can render a line of CSV from Perl
array(ref) with their C<say()> method.
L<dd2csv> from L<App::CSVUtils>
L<Perinci::CmdLine> framework can render function result (CLI output) as CSV.
B<Converting to/from other formats>
I<INI>: L<ini2csv> from L<App::TextTableUtils>
view all matches for this distribution
view release on metacpan or search on metacpan
devdata/https_mojolicious.io_blog_2017_12_01_day-1-getting-started view on Meta::CPAN
<div class="row">
<div class="ten columns centered text-center">
<h1>Mojo Wonk Blog<span>.</span></h1>
<p>A semi-offical blog dedicated to the Mojolicious web framework</p>
</div>
</div>
</div>
devdata/https_mojolicious.io_blog_2017_12_01_day-1-getting-started view on Meta::CPAN
<section id="section-2">
<h2>What is Mojolicious?</h2>
<p>Well, <a href="http://mojolicious.org">Mojolicious</a> is really two things.
First it is a powerful web-focused toolkit called Mojo.
Second it is a powerful web framework called Mojolicious.
The Mojolicious framework is built using the Mojo toolkit.</p>
<p>That that doesn't mean you can't use Mojo tools elsewhere.
If you see some tools you like but want to use with some other framework, go ahead, I won't tell!
Use it in any Perl code you want!</p>
<p>Shoot I wasn't going to mention Perl!
Yes, Mojolicious is written in Perl.
Don't let that scare you.
view all matches for this distribution
view release on metacpan or search on metacpan
devdata/https_mojolicious.io_blog_2018_12_01_welcome-mojoconf-recap_ view on Meta::CPAN
<div class="row">
<div class="ten columns centered text-center">
<h1>Mojo Wonk Blog<span>.</span></h1>
<p>A semi-offical blog dedicated to the Mojolicious web framework</p>
</div>
</div>
</div>
devdata/https_mojolicious.io_blog_2018_12_01_welcome-mojoconf-recap_ view on Meta::CPAN
<h3>Keynote</h3>
<p>This year's keynote was delivered by Author and Perl luminary <a href="http://www252.pair.com/~comdog/">brian d foy</a>.
He talked about how Mojo's whipupitude got real work done quickly in his consulting gigs.</p>
<p><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen frameborder="0" height="480" src="https://www.youtube.com/embed/1tPAfgE3CbU" width="854"></iframe></p>
<h3>Mojolicious 8.0 Announcement</h3>
<p>Mojolicious Project founder and lead developer Sebastian Riedel presented "Eight Point Oh".
Though it is ostensibly an announcement of the 8.0 release, it is more properly a recap of the features added to Mojo since 7.0.
It isn't just Mojolicious either, several spin-off projects are also mentioned.</p>
<p><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen frameborder="0" height="480" src="https://www.youtube.com/embed/nYlFprRybzA" width="854"></iframe></p>
<p>(Edit: This post originally stated that the talk included changes since 5.0.
While that had originally been the planned, there were so many features added since 7.0, covering from 5.0 up was dropped.)</p>
<h3>My Own Worst Enemy</h3>
devdata/https_mojolicious.io_blog_2018_12_01_welcome-mojoconf-recap_ view on Meta::CPAN
<p>The talk is about migrating from a Lite app to a full app.
If you find yourself feeling afraid or confused in moving to a full app, or if you read the Mojolicious documentation and wonder how it applies to a full app, give this a watch.
Bonus material about modern Javascript at the end too.</p>
<p><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen frameborder="0" height="480" src="https://www.youtube.com/embed/ycAXeOKLCGc" width="854"></iframe></p>
<h3>And Now, a Bit of Fun</h3>
<p>Right before the lightning talks, call it an hour before, conference co-organizer Marcus Ramberg mentioned that he wished there was at least one more lightning talk to fill out the time.
I had had one more talk idea and even had a vague outline of structure in my head, so on the spur of the moment I told him I'd do it.
The result was a bit rough (of course), and I've since cleaned it up if I should get a chance to do it again, but it was still fun I think.
If you're in the mood and have 5 minutes, what my rant about SAML.</p>
<p><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen frameborder="0" height="480" src="https://www.youtube.com/embed/xno08-KGJyY" width="854"></iframe></p>
<h3>Finally</h3>
<p>Have some fun, watch the talks from the conference, and if you enjoy what you see, consider coming to the next MojoConf!
I want to thank all of the organizers, the venue <a href="http://www.teknologihuset.no/">Teknologihuset</a> and the conference partner/sponsor <a href="https://www.ksat.no/">KSAT</a>.
view all matches for this distribution
view release on metacpan or search on metacpan
devdata/http_advent.perldancer.org_2018_13 view on Meta::CPAN
<div id="sidebar">
<a href="/" class="homelink">Dancer Advent Calendar</a><br />
<p>
The PerlDancer Advent Calendar is a community-driven project that aims
to showcase the Dancer Perl web framework.
</p>
<p>
Each day of December until Christmas, one article about Dancer. Stay tuned for new moves!
</p>
devdata/http_advent.perldancer.org_2018_13 view on Meta::CPAN
projects, we still wanted to give you a mini-advent-calendar this year.
Welcome to the Twelve Days of Dancer!</p>
<p>This year's calendar features twelve posts that cover a wide range of topics.
We feature several new authors, cover some new ground (for us!) with an
article on accessibility, and even have a crossover post showing how Dancer
can be used with other frameworks.</p>
<p>Without further ado, let's dance!</p>
<h2><a name="state_of_the_dancer"></a>State of the Dancer</h2>
<p>In 2017 and 2018, we saw fewer but more significant updates to Dancer and
Dancer2. With Dancer (1) being in maintenance mode, updates come only when
devdata/http_advent.perldancer.org_2018_13 view on Meta::CPAN
<div id="footer">
Powered by the
<a href="http://perldancer.org/" title="Perl Dancer - Perl web framework">
Dancer Perl web framework</a>
</div>
</div>
<script type="text/javascript">
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/Import/SHARYANTO/LoggingFrameworks.pm view on Meta::CPAN
our $DATE = '2018-09-22'; # DATE
our $VERSION = '0.001'; # VERSION
our $LIST = {
description => "This list is generated by extracting module names mentioned in the article [http://blogs.perl.org/users/steven_haryanto/2010/11/short-grossly-incomplete-comparison-of-perl-logging-frameworks.html] (retrieved on 2016-02-21). For the ...
entries => [
{ module => "Log::Any" },
{ module => "Log::Any::App" },
{ module => "Log::Dispatch" },
{ module => "Log::Dispatchoulli" },
{ module => "Log::Fast" },
{ module => "Log::Log4perl" },
{ module => "String::Flogger" },
],
summary => "(Short, grossly incomplete) comparison of Perl logging frameworks (2010)",
};
1;
# ABSTRACT: (Short, grossly incomplete) comparison of Perl logging frameworks (2010)
__END__
=pod
=encoding UTF-8
=head1 NAME
Acme::CPANModules::Import::SHARYANTO::LoggingFrameworks - (Short, grossly incomplete) comparison of Perl logging frameworks (2010)
=head1 VERSION
This document describes version 0.001 of Acme::CPANModules::Import::SHARYANTO::LoggingFrameworks (from Perl distribution Acme-CPANModulesBundle-Import-SHARYANTO), released on 2018-09-22.
=head1 DESCRIPTION
(Short, grossly incomplete) comparison of Perl logging frameworks (2010).
This list is generated by extracting module names mentioned in the article [http://blogs.perl.org/users/steven_haryanto/2010/11/short-grossly-incomplete-comparison-of-perl-logging-frameworks.html] (retrieved on 2016-02-21). For the full article, visi...
=head1 INCLUDED MODULES
=over
view all matches for this distribution
view release on metacpan or search on metacpan
examples/show_approximations.pl view on Meta::CPAN
my $res = [ $fuzzy->colour_approximations( $r, $g, $b ) ];
my $name = $fuzzy->colour_name( $r, $g, $b );
( my $pp_pack = $pack ) =~ s/^Color::Similarity:://;
my $app = Wx::SimpleApp->new;
my $frame = Wx::Frame->new( undef, -1, "($r, $g, $b) $pp_pack",
[-1, -1], [300, 440] );
my $y = 0;
for my $row ( { distance => 0,
name => 'ORIGINAL: ' . $name,
rgb => [ $r, $g, $b],
},
@$res ) {
my $panel = Wx::Panel->new( $frame, -1, [0, $y], [20, 20] );
EVT_PAINT( $panel, sub {
my $dc = Wx::PaintDC->new( $panel );
my $colour = Wx::Colour->new( @{$row->{rgb}} );
$dc->SetBrush( Wx::Brush->new( $colour, wxSOLID ) );
$dc->DrawRectangle( 0, 0, 20, 20 );
} );
Wx::StaticText->new( $frame, -1, $row->{distance} . ' ' . $row->{name},
[30, $y + 5] );
$y += 20;
}
$frame->Show;
$app->MainLoop;
exit 0;
=pod
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Spiffy.pm view on Meta::CPAN
our @EXPORT = ();
our @EXPORT_BASE = qw(field const stub super);
our @EXPORT_OK = (@EXPORT_BASE, qw(id WWW XXX YYY ZZZ));
our %EXPORT_TAGS = (XXX => [qw(WWW XXX YYY ZZZ)]);
my $stack_frame = 0;
my $dump = 'yaml';
my $bases_map = {};
sub WWW; sub XXX; sub YYY; sub ZZZ;
inc/Spiffy.pm view on Meta::CPAN
unless grep /^XXX$/, @EXPORT_BASE;
}
spiffy_filter()
if ($args->{-selfless} or $args->{-Base}) and
not $filtered_files->{(caller($stack_frame))[1]}++;
my $caller_package = $args->{-package} || caller($stack_frame);
push @{"$caller_package\::ISA"}, $self_package
if $args->{-Base} or $args->{-base};
for my $class (@{all_my_bases($self_package)}) {
next unless $class->isa('Spiffy');
inc/Spiffy.pm view on Meta::CPAN
}
package Spiffy;
sub super {
my $method;
my $frame = 1;
while ($method = (caller($frame++))[3]) {
$method =~ s/.*::// and last;
}
my @args = DB::super_args($frame);
@_ = @_ ? ($args[0], @_) : @args;
my $class = ref $_[0] ? ref $_[0] : $_[0];
my $caller_class = caller;
my $seen = 0;
my @super_classes = reverse grep {
inc/Spiffy.pm view on Meta::CPAN
for my $base_class (@base_classes) {
next if $inheritor->isa($base_class);
croak "Can't mix Spiffy and non-Spiffy classes in 'use base'.\n",
"See the documentation of Spiffy.pm for details\n "
unless $base_class->isa('Spiffy');
$stack_frame = 1; # tell import to use different caller
import($base_class, '-base');
$stack_frame = 0;
}
}
sub mixin {
my $self = shift;
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Spiffy.pm view on Meta::CPAN
our @EXPORT = ();
our @EXPORT_BASE = qw(field const stub super);
our @EXPORT_OK = (@EXPORT_BASE, qw(id WWW XXX YYY ZZZ));
our %EXPORT_TAGS = (XXX => [qw(WWW XXX YYY ZZZ)]);
my $stack_frame = 0;
my $dump = 'yaml';
my $bases_map = {};
sub WWW; sub XXX; sub YYY; sub ZZZ;
inc/Spiffy.pm view on Meta::CPAN
unless grep /^XXX$/, @EXPORT_BASE;
}
spiffy_filter()
if ($args->{-selfless} or $args->{-Base}) and
not $filtered_files->{(caller($stack_frame))[1]}++;
my $caller_package = $args->{-package} || caller($stack_frame);
push @{"$caller_package\::ISA"}, $self_package
if $args->{-Base} or $args->{-base};
for my $class (@{all_my_bases($self_package)}) {
next unless $class->isa('Spiffy');
inc/Spiffy.pm view on Meta::CPAN
}
package Spiffy;
sub super {
my $method;
my $frame = 1;
while ($method = (caller($frame++))[3]) {
$method =~ s/.*::// and last;
}
my @args = DB::super_args($frame);
@_ = @_ ? ($args[0], @_) : @args;
my $class = ref $_[0] ? ref $_[0] : $_[0];
my $caller_class = caller;
my $seen = 0;
my @super_classes = reverse grep {
inc/Spiffy.pm view on Meta::CPAN
for my $base_class (@base_classes) {
next if $inheritor->isa($base_class);
croak "Can't mix Spiffy and non-Spiffy classes in 'use base'.\n",
"See the documentation of Spiffy.pm for details\n "
unless $base_class->isa('Spiffy');
$stack_frame = 1; # tell import to use different caller
import($base_class, '-base');
$stack_frame = 0;
}
}
sub mixin {
my $self = shift;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/Free/API/Geodata/GeoIP.pm view on Meta::CPAN
}
# internal helpers
# these are copied from CAVACs vast framework. But we don't want hundreds of dependencies in this example code, only a couple of functions
sub _fetchURL($self, $url) {
$self->{agent}->get($url);
if(!$self->{agent}->success()) {
$self->_debuglog("Network error while fetching URL $url");
view all matches for this distribution
view release on metacpan or search on metacpan
* Updated Module::Build to 0.36_16, prompted by CPAN testers.
[Changes for 0.03 - 2005-08-09]
* Patch from Alejandro Imass to make Acme::Hello::I18N compliant
with newer versions of I18N frameworks.
[Changes for 0.02 - 2002-12-19]
* A shiny new Module::Build pass-thru installer
* META.yaml is now META.yml
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Spiffy.pm view on Meta::CPAN
our @EXPORT = ();
our @EXPORT_BASE = qw(field const stub super);
our @EXPORT_OK = (@EXPORT_BASE, qw(id WWW XXX YYY ZZZ));
our %EXPORT_TAGS = (XXX => [qw(WWW XXX YYY ZZZ)]);
my $stack_frame = 0;
my $dump = 'yaml';
my $bases_map = {};
sub WWW; sub XXX; sub YYY; sub ZZZ;
inc/Spiffy.pm view on Meta::CPAN
unless grep /^XXX$/, @EXPORT_BASE;
}
spiffy_filter()
if ($args->{-selfless} or $args->{-Base}) and
not $filtered_files->{(caller($stack_frame))[1]}++;
my $caller_package = $args->{-package} || caller($stack_frame);
push @{"$caller_package\::ISA"}, $self_package
if $args->{-Base} or $args->{-base};
for my $class (@{all_my_bases($self_package)}) {
next unless $class->isa('Spiffy');
inc/Spiffy.pm view on Meta::CPAN
}
package Spiffy;
sub super {
my $method;
my $frame = 1;
while ($method = (caller($frame++))[3]) {
$method =~ s/.*::// and last;
}
my @args = DB::super_args($frame);
@_ = @_ ? ($args[0], @_) : @args;
my $class = ref $_[0] ? ref $_[0] : $_[0];
my $caller_class = caller;
my $seen = 0;
my @super_classes = reverse grep {
inc/Spiffy.pm view on Meta::CPAN
for my $base_class (@base_classes) {
next if $inheritor->isa($base_class);
croak "Can't mix Spiffy and non-Spiffy classes in 'use base'.\n",
"See the documentation of Spiffy.pm for details\n "
unless $base_class->isa('Spiffy');
$stack_frame = 1; # tell import to use different caller
import($base_class, '-base');
$stack_frame = 0;
}
}
sub mixin {
my $self = shift;
view all matches for this distribution
view release on metacpan or search on metacpan
script/gen-generic-ind-company-names view on Meta::CPAN
# my $caller = caller(0);
# $package->_import_to($caller, %per_target_conf);
#}
#
#1;
## ABSTRACT: A lightweight, flexible logging framework
#
#__END__
#
#=pod
#
#=encoding UTF-8
#
#=head1 NAME
#
#Log::ger - A lightweight, flexible logging framework
#
#=head1 VERSION
#
#version 0.038
#
script/gen-generic-ind-company-names view on Meta::CPAN
#file or command-line option. See L<Log::ger::Manual::Tutorial::300_Level> for
#more details.
#
#=head1 DESCRIPTION
#
#Log::ger is yet another logging framework with the following features:
#
#=over
#
#=item * Separation of producers and consumers/listeners
#
script/gen-generic-ind-company-names view on Meta::CPAN
#
#=item * Flexible
#
#B<Customizable levels and routine/method names.> Can be used in a procedural or
#OO style. Log::ger can mimic the interface of L<Log::Any>, L<Log::Contextual>,
#L<Log::Log4perl>, or some other popular logging frameworks, to ease migration or
#adjust with your personal style.
#
#B<Per-package settings.> Each importer package can use its own format/layout,
#output. For example, a module that is migrated from Log::Any uses Log::Any-style
#logging, while another uses native Log::ger style, and yet some other uses block
#formatting like Log::Contextual. This eases code migration and teamwork. Each
#module author can preserve her own logging style, if wanted, and all the modules
#still use the same framework.
#
#B<Dynamic.> Outputs and levels can be changed anytime during run-time and logger
#routines will be updated automatically. This is useful in situation like a
#long-running server application: you can turn on tracing logs temporarily to
#debug problems, then turn them off again, without restarting your server.
script/gen-generic-ind-company-names view on Meta::CPAN
#
#=for Pod::Coverage ^(.+)$
#
#=head1 SEE ALSO
#
#Some other popular logging frameworks: L<Log::Any>, L<Log::Contextual>,
#L<Log::Log4perl>, L<Log::Dispatch>, L<Log::Dispatchouli>.
#
#If you still prefer debugging using the good old C<print()>, there's
#L<Debug::Print>.
#
view all matches for this distribution
view release on metacpan or search on metacpan
the advantage. But it was then that the unexpected happened, the thing
which projected their struggle for supremacy far into the future, past
many a weary mile of trail and toil.
An oath from Perrault, the resounding impact of a club upon a bony
frame, and a shrill yelp of pain, heralded the breaking forth of
pandemonium. The camp was suddenly discovered to be alive with skulking
furry forms,--starving huskies, four or five score of them, who had
scented the camp from some Indian village. They had crept in while Buck
and Spitz were fighting, and when the two men sprang among them with
stout clubs they showed their teeth and fought back. They were crazed
fell down and remained down till blows from whip or club drove him
to his feet again. All the stiffness and gloss had gone out of his
beautiful furry coat. The hair hung down, limp and draggled, or matted
with dried blood where Hal's club had bruised him. His muscles had
wasted away to knotty strings, and the flesh pads had disappeared, so
that each rib and every bone in his frame were outlined cleanly
through the loose hide that was wrinkled in folds of emptiness. It was
heartbreaking, only Buck's heart was unbreakable. The man in the red
sweater had proved that.
As it was with Buck, so was it with his mates. They were perambulating
view all matches for this distribution
view release on metacpan or search on metacpan
BleedingOpenGL.pm view on Meta::CPAN
GL_EXT_bgra=>'1.0', #129
GL_EXT_blend_color=>'1.0', #2
GL_EXT_blend_subtract=>'1.0', #38
GL_EXT_Cg_shader=>'1.0;ARB_shader_objects', #???
GL_EXT_copy_texture=>'1.0', #10
GL_EXT_framebuffer_object=>'1.1', #310
GL_EXT_packed_pixels=>'1.0', #23
GL_EXT_pixel_buffer_object=>'1.0', #???
GL_EXT_rescale_normal=>'1.0', #27
GL_EXT_separate_specular_color=>'1.0', #144
GL_EXT_shadow_funcs=>'1.1;ARB_depth_texture,ARB_shadow', #267
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Acme/MITHALDU/XSGrabBag/Inline.pm view on Meta::CPAN
# DO NOT EDIT. GENERATED BY: Inline::Module
#
# This module is for author-side development only. When this module is shipped
# to CPAN, it will be automagically replaced with content that does not
# require any Inline framework modules (or any other non-core modules).
#
# To regenerate this stub module, run this command:
#
# perl -MInline::Module=makestub,Acme::MITHALDU::XSGrabBag::Inline
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/MetaSyntactic/pgpfone.pm view on Meta::CPAN
Christmas clamshell classic classroom cleanup clockwork cobra commence
concert cowbell crackdown cranky crowfoot crucial crumpled crusade cubic
deadbolt deckhand dogsled dosage dragnet drainage dreadful drifter dropper
drumbeat drunken Dupont dwelling eating edict egghead eightball endorse
endow enlist erase escape exceed eyeglass eyetooth facial fallout flagpole
flatfoot flytrap fracture fragile framework freedom frighten gazelle
Geiger Glasgow glitter glucose goggles goldfish gremlin guidance hamlet
highchair hockey hotdog indoors indulge inverse involve island Janus
jawbone keyboard kickoff kiwi klaxon lockup merit minnow miser Mohawk
mural music Neptune newborn nightbird obtuse offload oilfield optic orca
payday peachy pheasant physique playhouse Pluto preclude prefer preshrunk
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/MetaSyntactic/buzzwords.pm view on Meta::CPAN
aggregator ajax bandwidth benchmarking backend beta bleeding_edge blog
bricks_and_clicks clickthrough client_server collaboration
content_management content_management_system convergence cross_platform
design_patterns digital_divide remastering digital_rights_management drm
digital_signage document_management dot_bomb download elearning
enterprise_content_management enterprise_service_bus framework
folksonomy fuzzy_logic immersion information_superhighway
information_highway mobile modularity nanotechnology netiquette
next_generation nextgen podcasting portal realtime saas scalability
social_bookmarking social_software spam struts sync_up tagging
user_generated_content virtualization vlogging vortal web_20 webinar
view all matches for this distribution
view release on metacpan or search on metacpan
devdata/article.html view on Meta::CPAN
<ul>
<li><a href="/daftar-isi/daftar-isi-koleksi-nama-awalan-a">A</a> | <a href="/daftar-isi/daftar-isi-koleksi-nama-awalan-b">B</a> | <a href="/daftar-isi/daftar-isi-koleksi-nama-awalan-c">C</a> | <a href="/daftar-isi/daftar-isi-koleksi-nama-awalan-d">D<...
<li><a href='/2010/03/27/nama-nama-islami-untuk-pria/' title='Nama Nama Islami Untuk Pria'>Nama Nama Islami Untuk Pria</a></li>
<li><a href='/2010/03/27/nama-nama-islami-untuk-wanita/' title='Nama Nama Islami Untuk Wanita'>Nama Nama Islami Untuk Wanita</a></li>
</ul>
<div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"><div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-official sd-sharing"><h3 class="sd-title">Share this:</h3><div class="s...
<div id='jp-relatedposts' class='jp-relatedposts' >
<h3 class="jp-relatedposts-headline"><em>Terkait</em></h3>
</div></div> <p>Laman: 1 <a href="https://namafb.com/2010/08/12/top-1000-nama-populer-indonesia/2/">2</a> <a href="https://namafb.com/2010/08/12/top-1000-nama-populer-indonesia/3/">3</a> <a href="https://namafb.com/2010/08/12/top-1000-nama-populer-...
</div>
<div class="under">
devdata/article.html view on Meta::CPAN
// ]]>
</script> <script type="text/javascript">
var skimlinks_pub_id = "725X584219"
var skimlinks_sitename = "pustakatips.wordpress.com";
</script>
<script type="text/javascript" src="https://s.skimresources.com/js/725X1342.skimlinks.js"></script> <iframe src='https://widgets.wp.com/likes/master.html?ver=20160429#ver=20160429&lang=id' scrolling='no' id='likes-master' name='likes-master' st...
<div id='likes-other-gravatars'><div class="likes-text"><span>%d</span> blogger menyukai ini:</div><ul class="wpl-avatars sd-like-gravatars"></ul></div>
<script>
var _comscore = _comscore || [];
_comscore.push({
c1: "2",
view all matches for this distribution
view release on metacpan or search on metacpan
bin/monkey_life.pl view on Meta::CPAN
use Acme::Monkey::Frame::Layer;
use Term::ANSIColor qw( :constants );
use Time::HiRes qw( sleep );
use Term::ReadKey;
my $frame = Acme::Monkey::Frame->new(
width => 20,
height => 10,
);
my $background = Acme::Monkey::Frame::Layer->new(
width => $frame->width(),
height => $frame->height(),
color => GREEN,
);
foreach my $x (1..$background->width()) {
foreach my $y (1..$background->height()) {
bin/monkey_life.pl view on Meta::CPAN
$background->set( $x, $y, '+' );
}
}
}
$frame->layers->{z} = $background;
my $food = Acme::Monkey::Frame::Layer->new(
width => $frame->width(),
height => $frame->height(),
color => BOLD.YELLOW,
);
$frame->layers->{x} = $food;
my %monkeys;
my $monkey_id = 1;
sub create_monkey {
bin/monkey_life.pl view on Meta::CPAN
);
$age = 1;
# $age ||= int(rand() * 100) + 1;
$layer->set( 1, 1, age_char($age) );
$frame->layers->{"monkey_$monkey_id"} = $layer;
$monkeys{$monkey_id} = {
layer => $layer,
# hunger => int(rand() * 20) + 1,
hunger => 0,
bin/monkey_life.pl view on Meta::CPAN
return '#';
}
sub add_food {
$food->set(
int(rand() * $frame->width()) + 1,
int(rand() * $frame->height()) + 1,
'/',
);
}
ReadMode 4;
bin/monkey_life.pl view on Meta::CPAN
last if ($key =~ /[xq]/);
if ($key eq 'c') {
create_monkey(
int(rand() * $frame->width()) + 1,
int(rand() * $frame->height()) + 1,
);
}
elsif ($key eq 'f') {
add_food();
add_food();
bin/monkey_life.pl view on Meta::CPAN
my $monkey = $monkeys{ $id };
my $layer = $monkey->{layer};
$monkey->{age} ++;
if ($monkey->{age} > 100) {
delete $frame->layers->{"monkey_$id"};
delete $monkeys{ $id };
next;
}
$layer->set( 1, 1, age_char($monkey->{age}) );
$monkey->{hunger}++;
if ($monkey->{hunger} > 40) {
delete $frame->layers->{"monkey_$id"};
delete $monkeys{ $id };
next;
}
my $x = $layer->x();
bin/monkey_life.pl view on Meta::CPAN
next if ($monkey->{last_move} == 2);
$layer->move_up() if ($y > 1);
}
elsif ($move==2) {
next if ($monkey->{last_move} == 1);
$layer->move_down() if ($y < $frame->height());
}
elsif ($move==3) {
next if ($monkey->{last_move} == 4);
$layer->move_left() if ($x > 1);
}
elsif ($move==4) {
next if ($monkey->{last_move} == 3);
$layer->move_right() if ($x < $frame->width());
}
$monkey->{last_move} = $move;
}
add_food();
$frame->draw();
print "\nc = Create new monkey baby.\nf = Create some bannanas to eat.\nx = Exit.";
sleep 1;
}
view all matches for this distribution