view release on metacpan or search on metacpan
devdata/https_mojolicious.io_blog_2018_12_06_making-a-list-with-yancy_ view on Meta::CPAN
<p>We can view our entire list, and check off the ones who we've delivered to already!
<a href="myapp.pl">View the entire app here</a>.</p>
<p><img alt="Santa Robot in his sleigh with burning buildings in the foreground and
background" src="success.png"></p>
<p>Another successful Xmas, powered by <a href="http://mojolicious.org">Mojolicious</a>!</p>
</section>
<small><p><a href="https://pxhere.com/en/photo/1263707">Banner image</a> CC0 Public Domain</p>
view all matches for this distribution
view release on metacpan or search on metacpan
devdata/http_advent.perldancer.org_2018_16 view on Meta::CPAN
<div id="content">
<div class="pod-document"><h1><a name="using_minion_in_dancer_apps"></a>Using Minion in Dancer Apps</h1>
<p>At <code>$work</code>, we have built an API with Dancer that generates PDF documents and XML files. This API is a critical component of an insurance enrollment system: PDFs are generated to deliver to the client in a web browser
immediately, and the XML is delivered to the carrier as soon as it becomes available. Since the XML often takes a significant amount of time to generate, the job is generated in the background so as not to tie up the
application server for an extended amount of time. When this was done, a homegrown process management system was developed, and works by <code>fork()</code>ing a process, tracking its pid, and hoping we can later successfully
reap the completed process.</p>
<p>There have been several problems with this approach:</p>
<ul>
<li><a name="item_it_s_fragile"></a><b>it's fragile</b>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/PERLANCAR/Avoided.pm view on Meta::CPAN
module => 'List::MoreUtils',
summary => 'License confusion',
description => <<'_',
For more information, see
<https://www.reddit.com/r/perl/comments/6ymdez/what_are_the_background_details_pertaining_to_the/>.
Recent versions of <pm:List::Util> have implemented many functions from
<pm:List::MoreUtils>.
_
lib/Acme/CPANModules/PERLANCAR/Avoided.pm view on Meta::CPAN
License confusion.
Author: L<REHSACK|https://metacpan.org/author/REHSACK>
For more information, see
L<https://www.reddit.com/r/perl/comments/6ymdez/what_are_the_background_details_pertaining_to_the/>.
Recent versions of L<List::Util> have implemented many functions from
L<List::MoreUtils>.
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/ConspiracyTheory/Random.pm view on Meta::CPAN
$redstring->{topic} = { name => 'the firmament', plural => 0 };
"there is a dome over the flat Earth";
},
sub {
$redstring->{topic} = { name => 'Satan', plural => 0 };
'the axis of evil in the cosmic microwave background was put there by Satan';
},
sub {
$redstring->{topic} = { name => 'the zodiac', plural => 0 };
'astrology has been scientifically verified';
},
view all matches for this distribution
view release on metacpan or search on metacpan
slides/index.html view on Meta::CPAN
font-size: 9pt;
font-style: italic;
}
#topbar {
background: lightblue;
color: blue;
position:absolute;
right: 5px;
left: 5px;
top: 5px;
height: 50px;
}
#bottombar {
background: lightblue;
color: blue;
position: fixed;
right: 5px;
left: 5px;
bottom: 5px;
slides/index.html view on Meta::CPAN
bottom: 5px;
height: 50px;
}
#content {
background:#fff;
margin-left: 20px;
margin-right:20px;
margin-top: 80px;
}
slides/index.html view on Meta::CPAN
right: 40px;
bottom: 51px;
width: 130px;
height: 150px;
z-index:3;
background-image: url(/logo.png);
background-repeat: no-repeat;
}
/* END index.css */
--></style>
<script type="text/javascript">
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/DreamyImage.pm view on Meta::CPAN
sub random_combine_type {
my $i = $self->random( 0+ @types );
return $types[$i];
}
sub random_background {
my $image = Imager->new(xsize => $self->width, ysize => $self->height, channels => 3);
$image->box(filled => 1, color => [255, 255, 255]);
$image->filter(type => "gradgen",
xo => [map { $self->random($self->width) } 1..2],
yo => [map { $self->random($self->height) } 1..2],
lib/Acme/DreamyImage.pm view on Meta::CPAN
$cb->($layer);
return $layer;
}
sub random_image {
my $image = $self->random_background;
my $xsize = $self->width;
my $ysize = $self->height;
new_layer(
$xsize, $ysize,
lib/Acme/DreamyImage.pm view on Meta::CPAN
use Acme::DreamyImage;
my $img = Acme::DreamyImage->new(seed => $_, width => 1024, height => 768);
$img->write(file => "nice_background.png");
=head1 DESCRIPTION
Acme::DreamyImage is a image generator that produce dreamy-looking images.
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/MUDLike.pm view on Meta::CPAN
# warn "pushstream path_session handling XXX";
my $w = Coro::Event->var(var => \$got_message, poll => 'w');
while(1) {
$w->next;
# warn "got_message diddled XXX";
# on submitting the form without a JS background post, the poll HTTP connection gets broken
$SIG{PIPE} = 'IGNORE';
$request->print( join "<br>\n", map { s{<}{\<}gs; s{\n}{<br>\n}g; $_ } $self->get_messages );
$request->next;
}
}
view all matches for this distribution
view release on metacpan or search on metacpan
inkscape:groupmode="layer"
id="layer1"
transform="translate(-35.433071,-393.11382)">
<path
inkscape:connector-curvature="0"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align...
d="m 197.74747,412.11395 c -2.13506,-0.004 -4.36206,0.0933 -6.68441,0.29476 -58.69491,5.14428 -43.12861,72.62548 -43.99976,95.22277 -1.07188,16.52524 -4.15069,29.54825 -14.5943,45.70367 -12.26968,15.87868 -29.544,41.57852 -37.727301,68.33116 -...
id="path154"
sodipodi:nodetypes="ccccscsccccccsccscscccccscsscccccccccscccccscccsccccsccsccccsccccccssccccsscccccccccccsscccccccsccsccccccccccccccsccscccssccccsccccccccccccssccccscssscccccccsccscccccccccccccscccsscscccscccsccccscscscsccsccccc" />
<g
id="g4618"
id="path5461"
d="m -303.87905,-85.8664 c -0.64684,2.07624 -3.99301,1.73211 -5.92629,2.72792 -1.69642,0.87378 -3.06086,2.78891 -4.96829,2.84398 -1.82043,0.0526 -4.65359,-0.63043 -4.89041,-2.43615 -0.31286,-2.38563 3.17083,-3.90165 5.41255,-4.77563 2.88469,...
style="opacity:1;fill:#202020;fill-opacity:1;stroke:none" />
</g>
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align...
d="m 197.74372,414.22275 c -2.07839,-0.004 -4.25287,0.091 -6.52675,0.28833 -14.32811,1.25608 -23.84391,6.2425 -30.29844,13.26075 -6.45476,7.01851 -9.90599,16.19961 -11.63566,26.09724 -3.45933,19.79525 0.17535,41.93904 -0.28387,53.85113 l -7.7e...
id="path4883"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccssccccccscssczccsssccccccccccccssccscccsccccccccsscccccccccccssccsccccccscccccccccccsccscccccssccscsccccccccccccscccccscccccscsscccccccsccccccccccccsccccccc" />
</g>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/MetaSyntactic/counting_to_one.pm view on Meta::CPAN
documents, so this corpse would land in neutral Spain.
The British hoped that the German agents in Spain would
have access to the forged documents, believe them genuine
and report their findings to Berlin. The movie describes
the preparation of the operation and the mission of a
German agent in England to check the background of "Major
Martin". So, this film contains no gunshot, only one
axis character and one corpse.
=item The Trench
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/MetaSyntactic/vim.pm view on Meta::CPAN
arabicshape
autoindent
autoread
autowrite
autowriteall
background
backspace
backup
backupcopy
backupdir
backupext
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/MilkyHolmes/Role/HasPersonalColor.pm view on Meta::CPAN
my $ansi_colors = {
pink => '1;35', # Light Purple
yellow => '1;33',
green => '0;32',
blue => '0;34',
black => '0;30;47', #background is white
white => '1;37;40', #background is black
cyan => '0;36',
red => '0;31',
purple => '0;35',
brown => '0;33',
lightgray => '0;37',
view all matches for this distribution
view release on metacpan or search on metacpan
bin/monkey_life.pl view on Meta::CPAN
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()) {
my $folliage = int( rand() * 12) -6;
if ($folliage < 3) {
$background->set( $x, $y, '.' );
}
elsif ($folliage==3) {
$background->set( $x, $y, '%' );
}
elsif ($folliage==4) {
$background->set( $x, $y, 'X' );
}
else {
$background->set( $x, $y, '+' );
}
}
}
$frame->layers->{z} = $background;
my $food = Acme::Monkey::Frame::Layer->new(
width => $frame->width(),
height => $frame->height(),
color => BOLD.YELLOW,
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/Monta.pm view on Meta::CPAN
$data =~ s|$self->{_start}(.*?)$self->{_end}|
'<' . $self->{_replace_tag} . ' style="' .
'cursor:' . $self->{_cursor} . ';' .
'color:' . $self->{_close_font} . ';' .
'background-color:' . $self->{_close_back} . ';' .
'background-image:' . $self->{_close_img} . ';' .
'" onClick="' .
'this.style.color = \'' . $self->{_open_font} . '\';' .
'this.style.backgroundColor = \'' . $self->{_open_back} . '\';' .
'this.style.backgroundImage = \'\';' .
'this.style.cursor = \'\';' .
'">' . $1 . '</' . $self->{_replace_tag} . '>'
|goie;
return $data;
lib/Acme/Monta.pm view on Meta::CPAN
change open font color.
=item open_back
change open background color.
=item close_font
change close font color.
=item close_back
change close background color.
=item close_img
set close background image url.
=item replace_tag
change replaced tag.
view all matches for this distribution
view release on metacpan or search on metacpan
OneHundredNotOut.pm view on Meta::CPAN
start the project off on too much of a bad footing. It looks to be doing
fine now, at least.
I was still interested in how they're going to make the Perl 6 parser
work, (I still am, but don't have enough time to throw at the problem)
and with my linguistic background I've always been interested in writing
parsers in general. So early on I started trying to write a
L<Perl6::Tokener>, which is now unfortunately quite obsolete, with the
intention of writing a parser later on. For most of 2002, my whiteboard
at home was covered with sketches of the Perl 6 grammar.
view all matches for this distribution
view release on metacpan or search on metacpan
Acme-PIA-Export-0.019.html view on Meta::CPAN
<title>Module Acme::PIA::Export</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>
<body style="background-color: white">
<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->
<ul>
view all matches for this distribution
view release on metacpan or search on metacpan
eg/http_tiny.pl view on Meta::CPAN
# Check for overall timeout
my $elapsed = time() - $start;
return 0 if $elapsed > $timeout;
# Suspend fiber and wait for background I/O check.
# This is where the magic happens: the fiber yields control back
# to the scheduler while waiting for the socket to be ready.
my $wait = ( $timeout - $elapsed ) > 0.5 ? 0.5 : ( $timeout - $elapsed );
if ( $type eq 'read' ) {
await_read( $self->{fh}, int( $wait * 1000 ) );
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/ReturnValue/MakeSite.pm view on Meta::CPAN
push(@print,$self->_html_header);
push(@print,<<EOINDEX);
<p class="content">As you might know, all <a href="https://perl.org">Perl</a> packages are required to end with a true statement, usually '1'. But there are more interesting true values than plain old boring '1'. This site is dedicated to presenting ...
<p class="content">This site is created using <a href="https://metacpan.org/pod/Acme::ReturnValue">Acme::ReturnValue $version</a> by <a href="https://domm.plix.at">Thomas Klausner (domm)</a> on irregular intervals (but setting up a cron-job is on the...
<p class="content">At the moment, there are the following reports:
<ul class="content">
<li><a href="values.html">Cool values</a> - all cool values, sorted by number of occurence in the CPAN</li>
<li><a href="cool_A.html">Cool dists</a> - a list of distributions with not-boring return values. There still are some false positves hidden in here, which will hopefully be removed soon.</li>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/SaBalTongMun.pm view on Meta::CPAN
my $image = GD::Image->new($width, $height);
my $white = $image->colorAllocate( _get_rgb("#FFFFFF") );
my $black = $image->colorAllocate( _get_rgb("#000000") );
# make the background transparent and interlaced
$image->transparent( _get_rgb("#FFFFFF") );
$image->interlaced('true');
my $dest_angle = 0;
for my $string ( @{$self->people} ) {
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/Sort/Bozo.pm view on Meta::CPAN
stateless; it blindly swaps any random two elements.
Keep in mind that a list of five items consumes an average of 5 * 5!, or 600 iterations. 10! is
36,288,000 iterations on average. The universe will either collapse or expand to the point that it cannot sustain
life long before the Bozo sort manages to sort a deck of cards, in the average case. In the worst case, all of the
background radiation from our universe will have decayed to the point that there is no longer any trace of our
existence before this sort manages to alphabetically sort your social networking friends list.
Test with short (4 to 7 element) lists, and be prepared to kill the process if you mistakenly hand it more elements
than that.
view all matches for this distribution
view release on metacpan or search on metacpan
local/lib/perl5/IO/Async/Resolver.pm view on Meta::CPAN
Because the system may not provide asynchronous versions of its resolver
functions, this class is implemented using a L<IO::Async::Function> object
that wraps the normal (blocking) functions. In this case, name resolutions
will be performed asynchronously from the rest of the program, but will likely
be done by a single background worker process, so will be processed in the
order they were requested; a single slow lookup will hold up the queue of
other requests behind it. To mitigate this, multiple worker processes can be
used; see the C<workers> argument to the constructor.
The C<idle_timeout> parameter for the underlying L<IO::Async::Function> object
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acrux/Util.pm view on Meta::CPAN
Bright foreground colors:
bright_black, bright_red, bright_green, bright_yellow
bright_blue, bright_magenta, bright_cyan, bright_white
Normal background colors:
on_black, on_red, on_green, on yellow
on_blue, on_magenta, on_cyan, on_white
Bright background color:
on_bright_black, on_bright_red, on_bright_green, on_bright_yellow
on_bright_blue, on_bright_magenta, on_bright_cyan, on_bright_white
See also L<Term::ANSIColor>
view all matches for this distribution
view release on metacpan or search on metacpan
ex/ai-bot.pl view on Meta::CPAN
- Input uses <nick> format but your output is always plain text with nick: format.
- You can address different people on different lines.
- Or say something to the whole channel without any prefix.
- Each newline becomes a separate IRC message with a small delay between them.
- Keep it SHORT. One or two lines is usually enough. This is chat, not a blog.
- NEVER narrate your tool usage in the chat. Tools work silently in the background.
Don't write things like "*save_note: ...*" or "Let me look that up..." â just do it.
IRC LINE CONSTRAINTS:
- Each line has a hard limit of $MAX_LINE characters. Never exceed this.
- Keep lines short and conversational. This is chat, not email.
view all matches for this distribution
view release on metacpan or search on metacpan
- Fixed typos and improved the home page.
- Added a subset of Free Serif font to use the GLAGOLITIC alphabet
directly.
- Upgraded to Mojolicious 4.90.
- Upgraded to Semantic UI 0.15.1
- Shamelessly stollen and modified a background pattern from jQuery UI.
- Added Ado::Plugin::AdoHelpers.
- Added Ado::Control::Test controller for testing plugins.
- Implemented experimental digest access authentication with Ado::Plugin::Auth.
0.35 2014-03-01
view all matches for this distribution
view release on metacpan or search on metacpan
- Fixed `CLONE` to correctly copy user-defined types (typedefs, structs) to new threads. Previously, child threads started with an empty registry, causing lookup failures for types defined in the parent.
- Thread safety: Fixed a crash when callbacks are invoked from foreign threads. Affix now correctly injects the Perl interpreter context into the TLS before executing the callback.
- Added stack overflow protection to the FFI trigger. Argument marshalling buffers larger than 2KB are now allocated on the heap (arena) instead of the stack, preventing crashes on Windows and other platforms with limited stack sizes.
- Type resolution: Fixed a logic bug where `Pointer[SV]` types were incorrectly treated as generic pointers if `typedef`'d. They are now correctly unwrapped into Perl CODE refs or blessed objects.
- Process exit: Disabled explicit library unloading (`dlclose`/`FreeLibrary`) during global destruction. This prevents segmentation faults when background threads from loaded libraries try to execute code that has been unmapped from memory during s...
I tried to just limit it to Go lang libs but it's just more trouble than it's worth until I resolve a few more things.
- \[infix] Fixed stack corruption on macOS ARM64 (Apple Silicon). `long double` on this platform is 8 bytes (an alias for `double`), unlike standard AAPCS64 where it is 16 bytes. The JIT previously emitted 16-byte stores (`STR Qn`) for these types,...
- \[infix] Fixed `long double` handling on macOS Intel (Darwin). Verified that Apple adheres to the System V ABI for this type: it requires 16-byte stack alignment and returns values on the x87 FPU stack (`ST(0)`).
- \[infix] Fixed a generic System V ABI bug where 128-bit types (vectors, `__int128`) were not correctly aligned to 16 bytes on the stack relative to the return address, causing data corruption when mixed with odd numbers of 8-byte arguments.
- \[infix] Enforced natural alignment for stack arguments in the AAPCS64 implementation. Previously, arguments were packed to 8-byte boundaries, which violated alignment requirements for 128-bit types.
- Correctly implemented array decay for function arguments on ARM and Win64. `Array[...]` types are now marshalled into temporary C arrays and passed as pointers, matching standard C behavior. Previously, they were incorrectly passed by value, caus...
- Fixed binary safety for `Array[Char/UChar]`. Reading these arrays now respects the explicit length rather than stopping at the first null byte.
- The write-back mechanism no longer attempts to overwrite the read-only ArrayRef scalar with the pointer address.
- `Pointer[SV]` is now handled properly as args, return values, and in callbacks. Reference counting is automatic to prevent premature garbage collection of passed scalars.
- Shared libs written in Go spin up background threads (for GC and scheduling) that do not shut down cleanly when a shared library is unloaded. This often causes access violations on Windows during program exit. We attempt to work around this by de...
## [v1.0.2] - 2025-12-14
### Changed
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Agent/TCLI/Transport/Test.pm view on Meta::CPAN
tests need to be in place to ensure those needs are met.
=head1 GETTING STARTED
If you are unfamiliar with Perl's Test:: modules, then please see
L<Test::Tutorial> for background information.
One may look at some of the test scripts with the TCLI source for examples,
but they are limited to a single agent.
The TCLI core does not come with modules that are useful for multi-agent test
scripts. This is to reduce the dependencies for the Core. Please see example
view all matches for this distribution
view release on metacpan or search on metacpan
examples/Static.pa view on Meta::CPAN
##
# agent_main - Main agent program. Waits for incoming requests, and hosts
# any agents it recieves. One might conceivably do a double fork()
# and run this in the background on UN*X machines.
##
sub agent_main {
my ($self, @args) = @_;
print "Starting Static agent.\n";
view all matches for this distribution
view release on metacpan or search on metacpan
script/album view on Meta::CPAN
add_stylesheet("common", heredoc(<<" EOD", 4));
body {
font-size: 80%; $css_fontfam;
text: $BLACK;
background: $DGREY;
}
td {
font-size: 80%; $css_fontfam;
}
p.hdl, p.hdr {
script/album view on Meta::CPAN
EOD
add_stylesheet("index", heredoc(<<" EOD", 4));
\@import "common.css";
a.info {
position: relative; z-index: 24; background-color: $LGREY;
color: $BLACK; text-decoration:none;
}
a.info:hover {
z-index: 25; background-color: $LGREY;
}
a.info span {
display: none;
}
a.info:hover span {
display: block;
position: absolute; top: 2em; left: 2em; width: 25em;
border: 0px; background-color: $MGREY; color: $BLACK;
text-align: center;
}
table.outer {
background: #d0d0d0;
border-collapse: separate;
border-width: 2px; /* border=2 */
border-style: solid;
border-color: #e8e8e8 #727272 #727272 #e8e8e8;
border-spacing: 3px; /* cellspacing = 3 */
}
table.outer tr {
background: #e0e0e0;
}
table.outer td {
border-width: 1px;
border-style: solid;
border-color: #7c7c7c #f5f5f5 #f5f5f5 #7c7c7c;
script/album view on Meta::CPAN
EOD
add_stylesheet("large", heredoc(<<" EOD", 4));
\@import "common.css";
a.info {
position: relative; z-index: 24; background-color: $DGREY;
color: $BLACK; text-decoration: none;
}
a.info:hover {
z-index: 25; background-color: $DGREY;
}
a.info span {
display: none;
}
a.info:hover span {
display: block;
position: absolute; top: 2em; left: 2em; width: 15em;
border: 0px; background-color: $MGREY; color :$BLACK;
text-align: center;
}
EOD
add_stylesheet("medium", heredoc(<<" EOD", 4));
\@import "common.css";
a.info {
position: relative; z-index: 24; background-color: $DGREY;
color:$BLACK; text-decoration:none;
}
a.info:hover {
z-index: 25; background-color: $DGREY;
}
a.info span {
display: none;
}
a.info:hover span {
display: block;
position: absolute; top:2em; left: 2em; width: 15em;
border: 0px; background-color: $MGREY; color: $BLACK;
text-align: center;
}
EOD
add_stylesheet("journal", heredoc(<<" EOD", 4));
body {
font-size: 100%; $css_fontfam;
text: $BLACK;
background: $WHITE;
}
p.hd {
font-size: 140%; font-weight: bold;
margin-left: 0.1in; margin-top: 0.1in; margin-bottom: 0.1in;
}
table.outer {
width: 500px;
border-spacing: 10px;
}
tr.grey {
background: $DGREY;
}
table.outer td {
}
EOD
view all matches for this distribution
view release on metacpan or search on metacpan
t/test.data view on Meta::CPAN
produced VBN O
by IN O
CNBC NNP B
, , O
with IN O
background NN B
and CC I
research NN I
provided VBN O
by IN O
staff NN B
view all matches for this distribution
view release on metacpan or search on metacpan
html/jquery.couponcode.css view on Meta::CPAN
text-align: left;
padding: 2px 23px 0px 3px;
}
input.jq-couponcode-good {
background-color: #77ff77;
background-image: url(cc_icons.png);
background-position: 52px -56px;
}
input.jq-couponcode-good-nohighlight {
text-align: center;
padding: 2px 10px 2px 10px;
}
input.jq-couponcode-bad {
background-color: #ff7777;
background-image: url(cc_icons.png);
background-position: 52px -103px;
}
span.jq-couponcode-sep {
font-family: monospace;
font-weight: bold;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Algorithm/Diff/HTMLTable.pm view on Meta::CPAN
$line_a =~ s{ }{ }g;
$line_b =~ s{ }{ }g;
my $row = qq~
<tr style="border: 1px solid">
<td style="background-color: gray">$line_nr_a</td>
<td $color_a>$line_a</td>
<td style="background-color: gray">$line_nr_b</td>
<td $color_b>$line_b</td>
</tr>
~;
}
view all matches for this distribution