<?xml version="1.0" encoding="ISO-8859-1"?>

<rdf:RDF
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns="http://purl.org/rss/1.0/"
 xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
 xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
 xmlns:admin="http://webns.net/mvcb/"
>

<channel rdf:about="http://use.perl.org/search.pl">
<title>use Perl Journal Search</title>
<link>http://use.perl.org/search.pl</link>
<description>use Perl Journal Search</description>
<dc:language>en-us</dc:language>
<dc:rights>use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners.</dc:rights>
<dc:date>2012-01-25T02:25:36+00:00</dc:date>
<dc:publisher>pudge</dc:publisher>
<dc:creator>pudge@perl.org</dc:creator>
<dc:subject>Technology</dc:subject>
<syn:updatePeriod>hourly</syn:updatePeriod>
<syn:updateFrequency>1</syn:updateFrequency>
<syn:updateBase>1970-01-01T00:00+00:00</syn:updateBase>
<items>
 <rdf:Seq>
  <rdf:li rdf:resource="http://use.perl.org/~schwern/journal/40528?from=rss" />
  <rdf:li rdf:resource="http://use.perl.org/~schwern/journal/40527?from=rss" />
  <rdf:li rdf:resource="http://use.perl.org/~Alias/journal/40526?from=rss" />
  <rdf:li rdf:resource="http://use.perl.org/~pudge/journal/40525?from=rss" />
  <rdf:li rdf:resource="http://use.perl.org/~masak/journal/40524?from=rss" />
  <rdf:li rdf:resource="http://use.perl.org/~Alias/journal/40523?from=rss" />
  <rdf:li rdf:resource="http://use.perl.org/~perl6doc/journal/40522?from=rss" />
  <rdf:li rdf:resource="http://use.perl.org/~awwaiid/journal/40521?from=rss" />
  <rdf:li rdf:resource="http://use.perl.org/~rblackwe/journal/40520?from=rss" />
  <rdf:li rdf:resource="http://use.perl.org/~masak/journal/40519?from=rss" />
  <rdf:li rdf:resource="http://use.perl.org/~pmichaud/journal/40518?from=rss" />
  <rdf:li rdf:resource="http://use.perl.org/~schwern/journal/40517?from=rss" />
  <rdf:li rdf:resource="http://use.perl.org/~masak/journal/40516?from=rss" />
  <rdf:li rdf:resource="http://use.perl.org/~scrottie/journal/40515?from=rss" />
  <rdf:li rdf:resource="http://use.perl.org/~daxim/journal/40514?from=rss" />
 </rdf:Seq>
</items>
<image rdf:resource="http://use.perl.org/images/topics/useperl.gif" />
</channel>

<image rdf:about="http://use.perl.org/images/topics/useperl.gif">
<title>use Perl Journal Search</title>
<url>http://use.perl.org/images/topics/useperl.gif</url>
<link>http://use.perl.org/search.pl</link>
</image>

<item rdf:about="http://use.perl.org/~schwern/journal/40528?from=rss">
<title>Finally, some Test::Builder2 examples! (2010.09.09  3:33)</title>
<link>http://use.perl.org/~schwern/journal/40528?from=rss</link>
<description>&lt;p&gt;For my PDX.pm presentation tonight on &lt;a href="http://github.com/schwern/test-more/tree/Test-Builder2"&gt;Test::Builder2&lt;/a&gt; I threw together some quick examples of some of its killer features, in particular demonstrating changing how Test::Builder2 behaves using method modifiers and applying object roles.&lt;/p&gt;&lt;p&gt;First, demonstrating end-of-assert actions, there's &lt;a href="http://github.com/schwern/test-more/blob/Test-Builder2/examples/TB2/lib/TB2/DieOnFail.pm"&gt;die on fail&lt;/a&gt; but even cooler is &lt;a href="http://github.com/schwern/test-more/blob/Test-Builder2/examples/TB2/lib/TB2/DebugOnFail.pm"&gt;DEBUG on fail&lt;/a&gt;!  That's right, run your test in the debugger and have it automatically set a breakpoint on a failure.  How cool is that?&lt;/p&gt;&lt;p&gt;I'm sure somebody with better debugger foo than I can make it even cooler and stop at the top of the assert stack rather than inside DebugOnFail.&lt;/p&gt;&lt;p&gt;The second is reimplementing &lt;a href="http://search.cpan.org/perldoc?Test::NoWarnings"&gt;Test::NoWarnings&lt;/a&gt; safely.  &lt;a href="http://github.com/schwern/test-more/blob/Test-Builder2/examples/TB2/lib/TB2/NoWarnings.pm"&gt;TB2::NoWarnings&lt;/a&gt; demonstrates hooking into the start and end of the test as well as safely altering the number of tests planned by trapping the call to set_plan.&lt;/p&gt;&lt;p&gt;You can safely use them all together, though its a crap shoot if DebugOnFail or DieOnFail will trigger first.&lt;/p&gt;&lt;p&gt;While roles and method modifiers are relatively new to the Perl community, using them in lieu of designing my own event system for TB2 has two great advantages.  First, I didn't have to design and debug my own event system.&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;:)  Second, rather than having to learn the quirks of a one-off system, you learn the quirks of Mo[uo]se and then can apply that knowledge all over the place.&lt;/p&gt;&lt;p&gt;There's &lt;a href="http://github.com/schwern/test-more/issues/labels/Test-Builder2"&gt;a pile of stuff to be done in TB2&lt;/a&gt;, a lot of them are fairly small and self contained.  Have a look.  Patches welcome.&lt;/p&gt;</description>
<dc:creator>schwern</dc:creator>
<dc:date>2010-09-09T08:33:42+00:00</dc:date>
<dc:subject>journal</dc:subject>
</item>

<item rdf:about="http://use.perl.org/~schwern/journal/40527?from=rss">
<title>Test::Builder2 at 10k Feet (2010.09.09  3:15)</title>
<link>http://use.perl.org/~schwern/journal/40527?from=rss</link>
<description>&lt;p&gt;Here's a diagram of the "flow" of assert results through Test::Builder version 1.&lt;/p&gt;&lt;blockquote&gt;&lt;div&gt;&lt;p&gt; &lt;tt&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.-------.&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| foo.t |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'-------'&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;.-------------.&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;.----------------.&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;| Test::More&amp;nbsp; |&amp;lt;---------&amp;gt;| Test::Whatever |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;'-------------'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'----------------'&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp;.---------------.&amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '----&amp;gt;| Test::Builder |&amp;lt;----'&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '---------------'&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; v&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.-----.&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| TAP |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'-----'&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; v&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.---------------.&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | Test::Harness |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '---------------'&lt;/tt&gt;&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt;&lt;p&gt;You write foo.t using Test::More and Test::Whatever.  These both&lt;br&gt;use the same Test::Builder object.  It spits out TAP which&lt;br&gt;Test::Harness converts into something human readable.&lt;/p&gt;&lt;p&gt;The big problem there is Test::Builder is monolithic.  There's no&lt;br&gt;further breakdown of responsibilities.  It only spits out TAP, and&lt;br&gt;only one version of TAP.&lt;/p&gt;&lt;p&gt;Here's what Test::Builder2 looks like:&lt;/p&gt;&lt;blockquote&gt;&lt;div&gt;&lt;p&gt; &lt;tt&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.-------.&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.----------------| foo.t |-------------------.&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '-------'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;v&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; v&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;v&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.------------.&amp;nbsp; &amp;nbsp; &amp;nbsp;.----------------.&amp;nbsp; &amp;nbsp; &amp;nbsp;.------------------.&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | Test::More |&amp;nbsp; &amp;nbsp; &amp;nbsp;| Test::Whatever |&amp;nbsp; &amp;nbsp; &amp;nbsp;| Test::NotUpdated |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '------------'&amp;nbsp; &amp;nbsp; &amp;nbsp;'----------------'&amp;nbsp; &amp;nbsp; &amp;nbsp;'------------------'&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; v&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;v&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.----------------.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.---------------.&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'----------&amp;gt;| Test::Builder2 |&amp;lt;------| Test::Builder |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'----------------'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'---------------'&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; v&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.--------------.&amp;nbsp; &amp;nbsp;&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.-------------.&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| TB2::History |&amp;lt;---| TB2::Result |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'--------------'&amp;nbsp; &amp;nbsp; '-------------'&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br&gt;&amp;nbsp; &amp;nbsp;&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.--------------------------.&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.---------------------.&lt;br&gt;&amp;nbsp; &amp;nbsp; | TB2::Formatter::TAP::v13 |&amp;lt;-----'------&amp;gt;| TB2::Formatter::GUI |&lt;br&gt;&amp;nbsp; &amp;nbsp; '--------------------------'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '---------------------'&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; v&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br&gt;&amp;nbsp;&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.-------------------------------.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br&gt;&amp;nbsp; | TB2::Formatter::Streamer::TAP |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br&gt;&amp;nbsp; '-------------------------------'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; v&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.-----.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| TAP |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'-----'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; v&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; v&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.---------------.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.-----------------.&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | Test::Harness |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| Pretty Pictures |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '---------------'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'-----------------'&lt;/tt&gt;&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt;&lt;p&gt;It starts out the same, foo.t uses a bunch of test modules&lt;br&gt;including Test::More and Test::Whatever using the same Test::Builder2&lt;br&gt;object, but it also uses Test::NotUpdated which is still using&lt;br&gt;Test::Builder.  That's ok because Test::Builder has been rewritten in&lt;br&gt;terms of Test::Builder2 (more on that below).&lt;/p&gt;&lt;p&gt;Test::Builder2, rather than being a monolith, produces a&lt;br&gt;Test::Builder2::Result object for each assert run.  This gets stored&lt;br&gt;in a Test::Builder2::History object for possible later use.  It also&lt;br&gt;gets handed to a Test::Builder2::Formatter object, the default is&lt;br&gt;Test::Builder2::TAP::v13 which produces TAP version 13.  This is fed&lt;br&gt;to a Streamer that prints it to STDOUT and STDERR which is read by&lt;br&gt;Test::Harness and made human readable.&lt;/p&gt;&lt;p&gt;Because Test::Builder2 is not monolithic, you can swap out parts.  For&lt;br&gt;example, instead of outputting TAP it could instead hand results to a&lt;br&gt;formatter that produced a simple GUI representation, maybe a green&lt;br&gt;bar, or something that hooks into a larger GUI.  Or maybe one that&lt;br&gt;produces JUnit XML.&lt;/p&gt;&lt;p&gt;Here's how Test::Builder and Test::Builder2 Relate.&lt;/p&gt;&lt;blockquote&gt;&lt;div&gt;&lt;p&gt; &lt;tt&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.-----.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.-----.&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | TB2 |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| TB1 |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '-----'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'-----'&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;v&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;v&lt;br&gt;&amp;nbsp; &amp;nbsp;&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.-------------.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.--------------.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.-------------.&lt;br&gt;&amp;nbsp; &amp;nbsp; | TB2::Result |-------&amp;gt;| TB2::History |&amp;lt;--------| TB2::Result |&lt;br&gt;&amp;nbsp; &amp;nbsp; '-------------'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '--------------'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'-------------'&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.----------------.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'-------------&amp;gt;| TB2::Formatter |&amp;lt;--------------'&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '----------------'&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;v&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.--------.&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | Output |&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '--------'&lt;/tt&gt;&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt;&lt;p&gt;Test::Builder and Test::Builder2 coordinate their actions by sharing&lt;br&gt;the same History and Formatter objects.  If you call TB1-&amp;gt;ok() it&lt;br&gt;produces a Result object which it hands to the History singleton and&lt;br&gt;the Formatter singleton.  If you call TB2-&amp;gt;ok() it produces a Result&lt;br&gt;object which it hands to the same History and Formatter objects.&lt;/p&gt;&lt;p&gt;This allows most of the Test::Builder code to remain the same while&lt;br&gt;still coordinating with Test::Builder2.  It also allows radically&lt;br&gt;different builders to be made without Test::Builder2 dictating how&lt;br&gt;they're to work.&lt;/p&gt;&lt;p&gt;The downside is that roles applied to Test::Builder2 will not effect&lt;br&gt;Test::Builder.  Because of this, Test::Builder may become more closely&lt;br&gt;coupled with Test::Builder2 in the future.&lt;/p&gt;&lt;p&gt;Diagrams by &lt;a href="http://search.cpan.org/dist/App-Asciio"&gt;App::Asciio&lt;/a&gt;.&lt;/p&gt;</description>
<dc:creator>schwern</dc:creator>
<dc:date>2010-09-09T08:15:22+00:00</dc:date>
<dc:subject>journal</dc:subject>
</item>

<item rdf:about="http://use.perl.org/~Alias/journal/40526?from=rss">
<title>DBD::SQLite 1.31 releasing next week and may break your code (2010.09.08 21:11)</title>
<link>http://use.perl.org/~Alias/journal/40526?from=rss</link>
<description>&lt;p&gt;After 6 or 7 months (mainly waiting around for the next "recommended upgrade instruction" from the SQLite project) the latest DBD::SQLite release should occur next week.&lt;/p&gt;&lt;p&gt;You can get the 1.30_06 release candidate from the CPAN, or from the following URL if your mirror hasn't synced yet.&lt;/p&gt;&lt;p&gt;&lt;a href="http://svn.ali.as/cpan/releases/DBD-SQLite-1.30_06.tar.gz"&gt;http://svn.ali.as/cpan/releases/DBD-SQLite-1.30_06.tar.gz&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Apart from the normal batch of SQLite upgrades (from 3.6.22 to 3.7.2), bug fixes, and minor enhancements, this release has two changes that may break your code.&lt;/p&gt;&lt;p&gt;These changes have been in the dev releases for some time, but you may want to take the opportunity to test more intensively if you use either of the following features.&lt;/p&gt;&lt;p&gt;1. BLOB columns with UTF8 content&lt;/p&gt;&lt;blockquote&gt;&lt;div&gt;&lt;p&gt; &lt;tt&gt;- Resolved #54271: Inserting a string with utf-8 flag on&lt;br&gt;&amp;nbsp; corrupts BLOB data; now BLOB data is always stored as bytes&lt;br&gt;
&amp;nbsp; (without the utf-8 flag) even if it has the flag set (ISHIGAKI)&lt;/tt&gt;&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt;&lt;p&gt;2. FTS3 queries&lt;/p&gt;&lt;blockquote&gt;&lt;div&gt;&lt;p&gt; &lt;tt&gt;- Added support for FTS3 tokenizers written in Perl. Added tests&lt;br&gt;&amp;nbsp; and documentation on how to use FTS3. Changed compilation flag&lt;br&gt;&amp;nbsp; to use the recommanded -DSQLITE_ENABLE_FTS3_PARENTHESIS&lt;br&gt;&amp;nbsp; *** MAY POSSIBLY BREAK OLD APPLICATIONS THAT ALREADY USED FTS3 ***&lt;br&gt;&amp;nbsp; (DAMI)&lt;/tt&gt;&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt;&lt;p&gt;If you are currently using FTS3, please see &lt;a href="http://search.cpan.org/perldoc?DBD::SQLite::FTS3Transitional"&gt;DBD::SQLite::FTS3Transitional&lt;/a&gt; which contains a helper function for automatically upgrading old FTS3 queries to the new syntax.&lt;/p&gt;</description>
<dc:creator>Alias</dc:creator>
<dc:date>2010-09-09T02:11:54+00:00</dc:date>
<dc:subject>journal</dc:subject>
</item>

<item rdf:about="http://use.perl.org/~pudge/journal/40525?from=rss">
<title>use Perl; Shutting Down Indefinitely (2010.09.08 17:07)</title>
<link>http://use.perl.org/~pudge/journal/40525?from=rss</link>
<description>&lt;p&gt;See &lt;a href="http://use.perl.org/article.pl?sid=10/09/08/2053239"&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
<dc:creator>pudge</dc:creator>
<dc:date>2010-09-08T22:07:47+00:00</dc:date>
<dc:subject>useperl</dc:subject>
</item>

<item rdf:about="http://use.perl.org/~masak/journal/40524?from=rss">
<title>The Pugs repository is dead; long live Mu! (2010.09.06  1:30)</title>
<link>http://use.perl.org/~masak/journal/40524?from=rss</link>
<description>&lt;p&gt;This weekend marks the end of a quite astonishing era. The Pugs repo, that hosted all the &lt;a href="http://use.perl.org/~masak/journal/40451"&gt;amazing Perl 6 activity&lt;/a&gt;, is no more. At its height, this repository had 242 committers! I just checked.&lt;/p&gt;&lt;p&gt;The Pugs repository has functioned as a common writing area for Perl 6-related things. First &lt;a href="http://github.com/audreyt/pugs"&gt;Pugs&lt;/a&gt;; then a lot of external &lt;a href="http://github.com/perl6/perl6-examples"&gt;modules and scripts&lt;/a&gt; written in Perl 6; what would eventually morph into &lt;a href="http://github.com/perl6/roast"&gt;the Perl 6 test suite&lt;/a&gt;; even the &lt;a href="http://github.com/perl6/specs"&gt;Perl 6 specification&lt;/a&gt; and the &lt;a href="http://github.com/perl6/std"&gt;standard grammar&lt;/a&gt;. Commit bits (write access credentials) were handed out liberally, and newcomers were encouraged to help improve things they found amiss. The degree to which this system worked without a hitch has been quite astonishing. There have been no edit wars, no vandalism, no banning. Just the continuing flow of commits. Trust the anarchy.&lt;/p&gt;&lt;p&gt;So why are we killing off the Pugs repository? Well, technologies come and go; not so much because they worsen by each year, but because our expectations rise in a sort of software inflation. The SVN repository became too high-maintenance, and a transition to git was the natural next step. The Pugs repository has been split up into the git repositories linked to in the previous paragraph. Those bits that don't belong in any of the standard bins remain in the &lt;a href="http://github.com/perl6/mu"&gt;Mu repository&lt;/a&gt;. (Its name is a reference to the most-general object type in Perl 6, what in other languages is commonly known as 'Object'.)&lt;/p&gt;&lt;p&gt;I for one salute our new git-based overlords! May the commits keep flowing even under this new system. Also, moritz++ for carrying out the move.&lt;/p&gt;</description>
<dc:creator>masak</dc:creator>
<dc:date>2010-09-06T06:30:29+00:00</dc:date>
<dc:subject>perl6</dc:subject>
</item>

<item rdf:about="http://use.perl.org/~Alias/journal/40523?from=rss">
<title>Should Module::Install move to explicit plugin declaration? (2010.09.05 21:26)</title>
<link>http://use.perl.org/~Alias/journal/40523?from=rss</link>
<description>&lt;p&gt;Module::Install has been through a long period of gradual stability over the last year, without any really dramatic improvements to the grammar or APIs.&lt;/p&gt;&lt;p&gt;With the more urgent "it doesn't work with blah" stuff mostly solved now, one of the big remaining issues is around error clarity and excessive magic.&lt;/p&gt;&lt;p&gt;For example, some random author that is trying to checkout a Catalyst project needs:&lt;/p&gt;&lt;p&gt;1. To have Module::Install installed.&lt;br&gt;2. To have Module::Install::Catalyst installed.&lt;/p&gt;&lt;p&gt;In the case of the former, you get the semi-cryptic but at least standard "Can't find inc/Module/Install.pm in @INC" message, so the error is resolvable.&lt;/p&gt;&lt;p&gt;But in the latter case, you're likely to get something like "Unknown command 'catalyst_ignore'", with no real obvious resolution mechanism.&lt;/p&gt;&lt;p&gt;I think this idea of automatic plugin discovery is starting to hit it's limits in terms of clarity.&lt;/p&gt;&lt;p&gt;And so I'd like to do something counter to my natural instincts here, and make M:I more verbose.&lt;/p&gt;&lt;p&gt;I'm thinking of something like the following for explicitly declaring the use of a non-core Module::Install extension.&lt;/p&gt;&lt;blockquote&gt;&lt;div&gt;&lt;p&gt; &lt;tt&gt;use inc::Module::Install qw{ Catalyst XSUtil };&lt;/tt&gt;&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt;&lt;p&gt;This would both allow M:I to error with a much more meaningful error when you don't have a plugin, and also prevent the loading of unused plugins which should prevent accidental plugin collisions (some of which I've seen occurring in the CPAN Testers machines).&lt;/p&gt;&lt;p&gt;Thoughts?&lt;/p&gt;</description>
<dc:creator>Alias</dc:creator>
<dc:date>2010-09-06T02:26:06+00:00</dc:date>
<dc:subject>journal</dc:subject>
</item>

<item rdf:about="http://use.perl.org/~perl6doc/journal/40522?from=rss">
<title>tomorrow, tomorrow (2010.09.05 16:54)</title>
<link>http://use.perl.org/~perl6doc/journal/40522?from=rss</link>
<description>.. I will start officially my work on &lt;a href="http://news.perlfoundation.org/2010/08/2010q3-grant-proposal-perl-6-t.html"&gt;the grant&lt;/a&gt;. Friday I gave my very well recieved Perl 6 talk (&lt;a href="http://www.slideshare.net/lichtkind/neuperl6"&gt;German slides&lt;/a&gt;). I set some minds right about Perl 6. I explained whts the idea behing Perl and Perl 6, showed some syntactic sugar, tipped the idea of perl 6 as a meta language and said some words about the current state of implementations.
&lt;br&gt; &lt;br&gt;
First mileston ist to write tablet 2 about variables in English (and German). As written under my proposal as comment, it will also appear in Perl6::Doc and therefore also in grop meaning the commandline on your computer, if you wish.
&lt;br&gt; &lt;br&gt;
There are also some bits of the tablet 0 - history I'm currently thinking about. And I also want to develop with jens (as announced) some educanional material, which I hope will also be stored in &lt;a href="http://github.com/szabgab/perl-promotion"&gt;gabors git repo&lt;/a&gt; for further reuse.
&lt;br&gt; &lt;br&gt;
All these things benefit from each other and YOU can of course contribute if you like.</description>
<dc:creator>perl6doc</dc:creator>
<dc:date>2010-09-05T21:54:05+00:00</dc:date>
<dc:subject>journal</dc:subject>
</item>

<item rdf:about="http://use.perl.org/~awwaiid/journal/40521?from=rss">
<title>DC Perl Mongers Rakudo Star Pizza Party Meeting (2010.09.03 19:50)</title>
<link>http://use.perl.org/~awwaiid/journal/40521?from=rss</link>
<description>&lt;p&gt;We're starting our usual monthly &lt;a href="http://dc.pm.org/"&gt;DC Perl Mongers&lt;/a&gt; meeting a bit early this Tuesday (September 7th) to have a little pizza and celebrate Rakudo-Star! Arrive at 6:30pm at the Starbucks at 18th and K Street NW (call me, Brock, if you miss us and need to be let in, number on the website) if you want food. But feel free to wander in any time thereafter, we usually stay as late as 10:00pm. We'll swoop down and look for people at the normal 7:30pm time too&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;:)&lt;/p&gt;&lt;p&gt;

Other activities:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Bring your laptop!&lt;/li&gt;&lt;li&gt;Installing Rakudo-Star&lt;/li&gt;&lt;li&gt;Giving hands-on tutorials&lt;/li&gt;&lt;li&gt;Beginner and Advanced welcome!&lt;/li&gt;&lt;li&gt;Never been to DC.pm before? No problem, come have some free pizza!&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
Please put your name on &lt;a href="http://dc.pm.org/Rakudo-Star_Party"&gt;http://dc.pm.org/Rakudo-Star_Party&lt;/a&gt; (or email the mailing list, which can be found at &lt;a href="http://dc.pm.org/"&gt;http://dc.pm.org/&lt;/a&gt;) so we know how much food to get.
&lt;/p&gt;&lt;p&gt;
If you have any questions, email the list or me directly -- awwaiid@gmail.com will do&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;:)
&lt;/p&gt;&lt;p&gt;
About Rakudo Star: "Rakudo Star" is a useful and usable distribution of Perl 6. Current releases are aimed at "early adopters" of Perl 6. We can tell you ALL about it when you arrive&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;:)
&lt;/p&gt;</description>
<dc:creator>awwaiid</dc:creator>
<dc:date>2010-09-04T00:50:48+00:00</dc:date>
<dc:subject>journal</dc:subject>
</item>

<item rdf:about="http://use.perl.org/~rblackwe/journal/40520?from=rss">
<title>Pittsburgh Perl Workshop CFP ends Monday Sept 6 (2010.09.02 10:22)</title>
<link>http://use.perl.org/~rblackwe/journal/40520?from=rss</link>
<description>The Pittsburgh Perl Workshop 2010 will be Saturday October 9 and Sunday 10 at the Gates Center at CMU.
&lt;br&gt; &lt;br&gt;
Don't miss your chance to speak at this years Workshop. The Call For Papers ends Monday Sept 6.
&lt;br&gt; &lt;br&gt;
&lt;a href="http://pghpw.org/ppw2010/newtalk"&gt;Submit your talk.&lt;/a&gt;</description>
<dc:creator>rblackwe</dc:creator>
<dc:date>2010-09-02T15:22:01+00:00</dc:date>
<dc:subject>events</dc:subject>
</item>

<item rdf:about="http://use.perl.org/~masak/journal/40519?from=rss">
<title>Yapsi 2010.09 Released! (2010.09.01 17:31)</title>
<link>http://use.perl.org/~masak/journal/40519?from=rss</link>
<description>&lt;p&gt;It is with a peevish exultation of spirit that I announce on behalf of
the Yapsi development team the September 2010 release of Yapsi -- soon
to be a major motion picture -- a Perl 6 compiler written in Perl 6.&lt;/p&gt;&lt;p&gt;You can download it &lt;a href="http://github.com/downloads/masak/yapsi/yapsi-2010.09.tar.gz"&gt;here&lt;/a&gt; (or, if you happen to be on an &lt;a href="http://en.wikipedia.org/wiki/IP_over_Avian_Carriers"&gt;avian-carrier-based&lt;/a&gt;
network, you can "pidgeon" it &lt;a href="http://github.com/downloads/masak/yapsi/yapsi-2010.09.tar.gz"&gt;here&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Yapsi is implemented in Perl 6. It thus requires a Perl 6 implementation to
build and run. This release of Yapsi has been confirmed to work on both
Rakudo Star 2010.08 and Rakudo Star 2010.07.&lt;/p&gt;&lt;p&gt;Yapsi is an "official and complete" implementation of Perl 6. Yapsi's
official status has been publicly confirmed by Patrick Michaud, the Rakudo
pumking. The claim about Yapsi being complete... well, it might just be
what PR people sometimes refer to as "a slight exaggeration". On the
bright side, it's becoming less so with each new release.&lt;/p&gt;&lt;p&gt;This month's release brings you &lt;code&gt;unless&lt;/code&gt; and &lt;code&gt;until&lt;/code&gt;, as well as &lt;code&gt;our&lt;/code&gt;-scoped
variables:&lt;/p&gt;&lt;p&gt; &lt;code&gt;
$ yapsi -e 'my $a = 0; unless $a { say 42 }'&lt;br&gt;
42
&lt;/code&gt; &lt;/p&gt;&lt;p&gt; &lt;code&gt;
$ yapsi -e 'my $a = 0; until $a { say ++$a }'
1
&lt;/code&gt; &lt;/p&gt;&lt;p&gt; &lt;code&gt;
$ yapsi -e 'our $a = 42; { my $a = 5; { say our $a } }'
42
&lt;/code&gt; &lt;/p&gt;&lt;p&gt;For a complete list of changes, see &lt;a href="http://github.com/masak/yapsi/tree/master/doc/ChangeLog"&gt;doc/ChangeLog&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Quite a lot of features are within reach of people who are interested in
hacking on Yapsi. See the &lt;a href="http://github.com/masak/yapsi/tree/master/doc/LOLHALP"&gt;doc/LOLHALP&lt;/a&gt; file for a list of 'em. In fact,
that's how isBEKaml++ implemented 'unless' this month. (After which he
exclaimed "that was easy!" and tackled 'until'.) If you're wondering whether
you're qualified to help with the Yapsi project, that probably means you are.&lt;/p&gt;&lt;p&gt;Yapsi consists of a compiler and a runtime. The compiler generates instruction
code which the runtime then interprets. In Yapsi, that instruction code
(unfortunately) is called SIC[!]. Until further notice, SIC as a format changes
with each monthly release for various, mostly good reasons. However, if you
write a downstream tool that makes assumptions about the SIC format, someone
might change it just out of spite. SIC is explicitly not compatible with later,
earlier, or present versions of itself.&lt;/p&gt;&lt;p&gt;An overarching goal for making a Perl 6 compiler-and-runtime is to use it as
a server for various other projects, which will hook in at different steps:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt; A time-traveling debugger (tardis), which hooks into the runtime.&lt;/li&gt;&lt;li&gt; A coverage tool (lid), which will also hook into the runtime.&lt;/li&gt;&lt;li&gt; A syntax checker (sigmund), which will use output from the parser.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Another overarching goal is to optimize for fun while learning about parsers,
compilers, and runtimes.&lt;/p&gt;&lt;p&gt;Have the appropriate amount of fun!&lt;/p&gt;</description>
<dc:creator>masak</dc:creator>
<dc:date>2010-09-01T22:31:48+00:00</dc:date>
<dc:subject>perl6</dc:subject>
</item>

<item rdf:about="http://use.perl.org/~pmichaud/journal/40518?from=rss">
<title>Rakudo Star 2010.08 released (2010.09.01  7:36)</title>
<link>http://use.perl.org/~pmichaud/journal/40518?from=rss</link>
<description>&lt;p&gt;[This announcement was made last week on rakudo.org -- I'm reposting to use.perl.org so it will show up in the various Perl aggregators. --Pm]&lt;/p&gt;&lt;p&gt;On behalf of the Rakudo and Perl 6 development teams, I'm happy to announce the August 2010 release of "Rakudo Star", a useful and usable distribution of Perl 6. The tarball for the August 2010 release is available from &lt;a href="http://github.com/rakudo/star/downloads"&gt;http://github.com/rakudo/star/downloads&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Rakudo Star is aimed at "early adopters" of Perl 6. We know that it still has some bugs, it is far slower than it ought to be, and there are some advanced pieces of the Perl 6 language specification that aren't implemented yet. But Rakudo Perl 6 in its current form is also proving to be viable (and fun) for developing applications and exploring a great new language. These "Star" releases are intended to make Perl 6 more widely available to programmers, grow the Perl 6 codebase, and gain additional end-user feedback about the Perl 6 language and Rakudo's implementation of it.&lt;/p&gt;&lt;p&gt;In the Perl 6 world, we make a distinction between the language ("Perl 6") and specific implementations of the language such as "Rakudo Perl". The August 2010 Star release includes release #32 of the Rakudo Perl 6 compiler [1], version 2.7.0 of the Parrot Virtual Machine [2], and various modules, documentation, and other resources collected from the Perl 6 community.&lt;/p&gt;&lt;p&gt;This release of Rakudo Star adds the following features over the previous Star release:&lt;br&gt;* Nil is now undefined&lt;br&gt;* Many regex modifiers are now recognized on the outside of regexes&lt;br&gt;* Mathematic and range operations are now faster (they're still slow, but they're significantly faster than they were in the previous release)&lt;br&gt;* Initial implementations of&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.pack and&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.unpack&lt;br&gt;* MAIN can parse short arguments&lt;br&gt;* Removed a significant memory leak for loops and other repeated blocks&lt;/p&gt;&lt;p&gt;This release (temporarily?) omits the Config::INI module that was included in the 2010.07 release, as it no longer builds with the shipped version of Rakudo. We hope to see Config::INI return soon.&lt;/p&gt;&lt;p&gt;There are some key features of Perl 6 that Rakudo Star does not yet handle appropriately, although they will appear in upcoming releases. Thus, we do not consider Rakudo Star to be a "Perl 6.0.0" or "1.0" release. Some of the not-quite-there features include:&lt;br&gt;* nested package definitions&lt;br&gt;* binary objects, native types, pack and unpack&lt;br&gt;* typed arrays&lt;br&gt;* macros&lt;br&gt;* state variables&lt;br&gt;* threads and concurrency&lt;br&gt;* Unicode strings at levels other than codepoints&lt;br&gt;* pre and post constraints, and some other phasers&lt;br&gt;* interactive readline that understands Unicode&lt;br&gt;* backslash escapes in regex  character classes&lt;br&gt;* non-blocking I/O&lt;br&gt;* most of Synopsis 9&lt;br&gt;* perl6doc or pod manipulation tools&lt;/p&gt;&lt;p&gt;In many places we've tried to make Rakudo smart enough to inform the programmer that a given feature isn't implemented, but there are many that we've missed. Bug reports about missing and broken features are welcomed.&lt;/p&gt;&lt;p&gt;See &lt;a href="http://perl6.org/"&gt;http://perl6.org/&lt;/a&gt; for links to much more information about Perl 6, including documentation, example code, tutorials, reference materials, specification documents, and other supporting resources. An updated draft of a Perl 6 book is available as  in the release tarball.&lt;/p&gt;&lt;p&gt;The development team thanks all of the contributors and sponsors for making Rakudo Star possible. If you would like to contribute, see &lt;a href="http://rakudo.org/how-to-help"&gt;http://rakudo.org/how-to-help&lt;/a&gt;, ask on the perl6-compiler@perl.org mailing list, or join us on IRC channel #perl6 on freenode.&lt;/p&gt;&lt;p&gt;Rakudo Star releases are created on a monthly cycle or as needed in response to important bug fixes or improvements. The next planned release of Rakudo Star will be on September 28, 2010.&lt;/p&gt;&lt;p&gt;[1] &lt;a href="http://github.com/rakudo/rakudo"&gt;http://github.com/rakudo/rakudo&lt;/a&gt;&lt;br&gt;[2] &lt;a href="http://parrot.org/"&gt;http://parrot.org/&lt;/a&gt;&lt;/p&gt;</description>
<dc:creator>pmichaud</dc:creator>
<dc:date>2010-09-01T12:36:56+00:00</dc:date>
<dc:subject>perl6</dc:subject>
</item>

<item rdf:about="http://use.perl.org/~schwern/journal/40517?from=rss">
<title>A month of Test::Builder2 (2010.08.27 23:08)</title>
<link>http://use.perl.org/~schwern/journal/40517?from=rss</link>
<description>&lt;p&gt;I've had &lt;a href="http://www.perlfoundation.org/test_builder_2"&gt;a grant open for Test::Builder2&lt;/a&gt; for, oh god over two years now.  Since I started it, Perl 6 has had a release!  I think its the second oldest running dev grant.&lt;/p&gt;&lt;p&gt;I've cleared the decks of other responsibilities and can dedicate September to, if not finishing, then at least releasing something people can poke at.  First alpha release was supposed to be "two weeks after the start" ha ha ha! oh god.  The design has evolved and simplified greatly in the intervening two years, but its time to get something the hell out the door.  At least a &lt;a href="http://github.com/schwern/test-more/tree/Test-Builder2"&gt;Test::Builder2&lt;/a&gt; Star if you will.&lt;/p&gt;&lt;p&gt;There's critical components missing.  There's no diagnostics, YAML or otherwise.  The issues with nested asserts are still congealing.  Plans are not enforced.  Result objects are in the middle of being remodeled... again.  But Test::Builder is using what parts of Test::Builder2 are usable.  Multiple output formats and streams work.  Asserts can be nested in the common, simple cases without having to fiddle with $Level.  And you can hook into various events.&lt;/p&gt;&lt;p&gt;Step one is I'm going to seal up what's there, write docs where they're missing, and release something.&lt;/p&gt;&lt;p&gt;A release before October or the grant dies.&lt;/p&gt;</description>
<dc:creator>schwern</dc:creator>
<dc:date>2010-08-28T04:08:39+00:00</dc:date>
<dc:subject>journal</dc:subject>
</item>

<item rdf:about="http://use.perl.org/~masak/journal/40516?from=rss">
<title>Idiomatic Perl 6 (2010.08.26 19:22)</title>
<link>http://use.perl.org/~masak/journal/40516?from=rss</link>
<description>&lt;p&gt;So, I wrote a program to generate &lt;a href="http://en.wikipedia.org/wiki/Pascal"&gt;Pascal's triangle&lt;/a&gt;. The first ten rows of the triangle, at least. It only used simple features of Perl 6, such as scalars, nested arrays, and &lt;code&gt;for&lt;/code&gt; loops.&lt;/p&gt;&lt;p&gt; &lt;code&gt;
my $ELEMENTS = 10;&lt;br&gt;
my @pascal = [1];&lt;br&gt;
&lt;br&gt;
for 1&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.. $ELEMENTS - 1 {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my @last = @pascal[ * - 1 ].list;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my @current;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push @current, @last[0];&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for 0&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.. @last - 2 {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push @current, @last[$_] + @last[$_ + 1];&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push @current, @last[ * - 1 ];&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push @pascal, [@current];&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
say @pascal.perl;
&lt;/code&gt; &lt;/p&gt;&lt;p&gt;In fact, save for simple mechanically substitutable differences, it could have been a Perl 5 script. In fact, with a bit of manual array allocation, it could have been a C script. That's OK; there's a tolerance in the Perl community of writing code that looks like it was thunk in some other language.&lt;/p&gt;&lt;p&gt;But I've heard that Perl 6 is great at doing things with operators. For example, the &lt;code&gt;Z&lt;/code&gt; operator, which interleaves two lists, seems to be able to help me write my &lt;code&gt;push&lt;/code&gt; statements more succinctly:&lt;/p&gt;&lt;p&gt; &lt;code&gt;
my $ELEMENTS = 10;&lt;br&gt;
my @pascal = [1];&lt;br&gt;
&lt;br&gt;
for 1&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.. $ELEMENTS - 1 {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my @last = @pascal[ * - 1 ].list;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my @current;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;for (0, @last) Z (@last, 0) -&amp;gt; $left, $right {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push @current, $left + $right;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/b&gt; &lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push @pascal, [@current];&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
say @pascal.perl;
&lt;/code&gt; &lt;/p&gt;&lt;p&gt;The parentheses before and after the &lt;code&gt;infix:&amp;lt;Z&amp;gt;&lt;/code&gt; aren't necessary, because the &lt;code&gt;Z&lt;/code&gt; operator has looser precedence than comma. They're just shown here to make your eyes accustomed to reading this construct.&lt;/p&gt;&lt;p&gt;In fact, now that only the addition is performed in the inner loop, I might as well use the &lt;code&gt;Z+&lt;/code&gt; operator, which does this for me.&lt;/p&gt;&lt;p&gt; &lt;code&gt;
my $ELEMENTS = 10;&lt;br&gt;
my @pascal = [1];&lt;br&gt;
&lt;br&gt;
for 1&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.. $ELEMENTS - 1 {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my @last = @pascal[ * - 1 ].list;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my @current &lt;b&gt;= 0, @last Z+ @last, 0;&lt;/b&gt; &lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push @pascal, [@current];&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
say @pascal.perl;
&lt;/code&gt; &lt;/p&gt;&lt;p&gt;Now as the remaining loop shrinks to a size I can take in all at once, I see a bit more clearly what I'm doing: I'm building each new list from the previous one. I could feed the previous list into a named function to get the current one:&lt;/p&gt;&lt;p&gt; &lt;code&gt;
my $ELEMENTS = 10;&lt;br&gt;
my @pascal = [1];&lt;br&gt;
&lt;b&gt; &lt;br&gt;
sub next-list(@p) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[0, @p Z+ @p, 0]&lt;br&gt;
}&lt;br&gt;
&lt;/b&gt; &lt;br&gt;
for 1&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.. $ELEMENTS - 1 {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my @last = @pascal[ * - 1 ].list;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my @current = &lt;b&gt;next-list(@last)&lt;/b&gt;;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push @pascal, @current;&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
say @pascal.perl;
&lt;/code&gt; &lt;/p&gt;&lt;p&gt;Or I could just feed it into a in-place anonymous sub.&lt;/p&gt;&lt;p&gt; &lt;code&gt;
my $ELEMENTS = 10;&lt;br&gt;
my @pascal = [1];&lt;br&gt;
&lt;br&gt;
for 1&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.. $ELEMENTS - 1 {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my @last = @pascal[ * - 1 ].list;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push @pascal, &lt;b&gt;(sub (@p) { [0, @p Z+ @p, 0] }).(@last)&lt;/b&gt;;&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
say @pascal.perl;
&lt;/code&gt; &lt;/p&gt;&lt;p&gt;But why even a sub? Perl 6 has a lighter construct, namely a "pointy block" (also known as a "closure" or a "lambda"). It doesn't participate in the call stack, and it's slightly easier to write.&lt;/p&gt;&lt;p&gt; &lt;code&gt;
my $ELEMENTS = 10;&lt;br&gt;
my @pascal = [1];&lt;br&gt;
&lt;br&gt;
for 1&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.. $ELEMENTS - 1 {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my @last = @pascal[ * - 1 ].list;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push @pascal, (&lt;b&gt;-&amp;gt; @p&lt;/b&gt; { [0, @p Z+ @p, 0] }).(@last);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
say @pascal.perl;
&lt;/code&gt; &lt;/p&gt;&lt;p&gt;Let's look at what the code does. Seed with one element. Calculate the next element based on the previous one. Stop at some point.&lt;/p&gt;&lt;p&gt;But that's exactly what the series operator does. The one that's written with three dots. We have a starting value, a way to get from one value to the next (our code block above), and a stopping value.&lt;/p&gt;&lt;p&gt;Well actually, we don't have the stopping value. But that's OK, since the series operator is &lt;em&gt;lazy&lt;/em&gt;. So if we only request the first 10 values, it won't loop forever giving us the rest of the list.&lt;/p&gt;&lt;p&gt; &lt;code&gt;
&lt;b&gt;my @pascal&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;:= do [1], -&amp;gt; @p { [0, @p Z+ @p, 0] }&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;... *;&lt;/b&gt; &lt;br&gt;
&lt;br&gt;
say &lt;b&gt;@pascal[^10]&lt;/b&gt;.perl;
&lt;/code&gt; &lt;/p&gt;&lt;p&gt;(The extra &lt;code&gt;do&lt;/code&gt; required because of a &lt;a href="http://rt.perl.org/rt3/Ticket/Display.html?id=77462"&gt;shortcoming in Rakudo&lt;/a&gt;.)&lt;/p&gt;&lt;p&gt;Now. Something very much like this code was posted first &lt;a href="http://rosettacode.org/wiki/Pascal's_triangle#Perl_6"&gt;on Rosetta code&lt;/a&gt; and then &lt;a href="http://perlgeek.de/blog-en/perl-6/pascal-triangle.html"&gt;on Moritz' blog&lt;/a&gt;. (TimToady used a sub, but said later that he'd have preferred binding.)&lt;/p&gt;&lt;p&gt;A couple of Perl 5 people's reactions were &amp;#8212; somewhat uncharacteristically &amp;#8212; of a negative flavour, similar to how people &lt;a href="http://use.perl.org/~masak/journal/40339"&gt;seem to react&lt;/a&gt; to the periodic table of operators:&lt;/p&gt;&lt;p&gt; &lt;code&gt;
&lt;a href="http://twitter.com/shadowcat_mst/status/22112066276"&gt;@shadowcat_mst&lt;/a&gt;: an excellent example of why I consider camelia perl to be a language research project more than a production language
&lt;/code&gt; &lt;/p&gt;&lt;p&gt; &lt;code&gt;
&lt;a href="http://twitter.com/pedromelo/status/22110965152"&gt;@pedromelo&lt;/a&gt;: I'm seriously considering this post as an example of what I don't want Perl6 to become...
&lt;/code&gt; &lt;/p&gt;&lt;p&gt;I think these reactions are mainly feature shock. Higher-order operators, pointy blocks, and the series operator... they're all good, well-established features, which find daily use in Perl 6 programs. Maybe using them all together like that flung some people off the deep end. Never mind that the resulting script is all &lt;a href="http://en.wikipedia.org/wiki/Essential_complexity"&gt;essential complexity&lt;/a&gt;, with virtually no boilerplate from the original script left.&lt;/p&gt;&lt;p&gt;This is the first time that's happened. I think it's important to listen to what Perl 5 people think and to try to respond to that. But I also think that this time, it's a case of them seeing some highly idiomatic Perl 6, and freaking out a bit.&lt;/p&gt;&lt;p&gt;And I think that that, in some odd sense, is a good thing. Well, not freaking people out, per se. But the fact that we did shows that there's something forming which might be tentatively called "idiomatic Perl 6": people on the inside can read it quite easily, but those on the outside, even Perl 5 folks looking in, instinctively go "eeeeew!".&lt;/p&gt;&lt;p&gt;That's OK. You're not meant to start with the idiomatic stuff. &lt;em&gt;Language acquisition takes place step by step&lt;/em&gt;, and that goes for learning Perl 6 as well. On the way there, just don't confuse distaste with lack of familiarity.&lt;/p&gt;</description>
<dc:creator>masak</dc:creator>
<dc:date>2010-08-27T00:22:03+00:00</dc:date>
<dc:subject>perl6</dc:subject>
</item>

<item rdf:about="http://use.perl.org/~scrottie/journal/40515?from=rss">
<title>Amiga Ethernet (2010.08.25 15:09)</title>
<link>http://use.perl.org/~scrottie/journal/40515?from=rss</link>
<description>&lt;p&gt;Yesterday, I got my X-Surf 3cc Ethernet card I broke down and ordered for my Amiga 3000.  There's some backstory about serial consoles, Sparcs, and the cluster, but it's not important.  The 3000 was also packaged as a Unix machine, running a pretty standard port of SysV.  It was the first Amiga standard with an MMU and SCSI.  It'll also kick out 1280x resolution graphics at 2bpp.  Commodore sold an Ethernet board for it along with Unix on tape.&lt;/p&gt;&lt;p&gt;The X-Surf is really an ISA card, probably NE2000, mounted in a little carrier.  There are confusingly few pins attached and the logic on the carrier amounts to a few small 7400 series chips and one slightly larger chip that also couldn't possibly have enough logic on it to do what it does.  And then just to convince you that your nuts, it adds an IDE port that alone has more lines than the one little adapter chip does.  The Amiga really is a machine for psychopaths, by psychopaths.  Everyone sits around all of the time trying to out psycho everyone else.  Just take a look at the demo scene for the thing.  Amiga virtually defined the demo scene.&lt;/p&gt;&lt;p&gt;I have/had Amiga OS 3.9 on the thing.  3.9 is post-Commodore death.  Someone bought the rights and sold them and someone bought them and sold them and so on until a sue happy band of self righteous ruffians managed to convince the remaining user base buying the rights at garage sale prices entitled them to be king of the squalid kingdom so that they could go around lynching anyone else trying to do anything for the Amiga.  Anyway, OS 3.9 is pretty recent as far as Amiga stuff goes, even though it's ten years old.  Most people stopped at 3.1.  3.9 only came out on CD-ROM.  The 3000 doesn't have a bay but it does have SCSI, so the CD-ROM, when needed, gets hung off the side with the case open.  I could also set up an enclosure and plug it into the back.  I could also probably buy one of those.&lt;/p&gt;&lt;p&gt;X-Surf's stuff did not want to install.&lt;/p&gt;&lt;p&gt;X-Surf actually had an installer, which is impressive.  AmigaOS 3.x has a scripting language for installers and an interpreter for that.  This installer gave you the choice of two TCP stacks.  AmigaOS 3.9 comes with a TCP stack but you can still swap it out.  It's a bit Windows 3.1-like in that regard.  The options are GENESiS/AmiTCP and Miami.  GENESiS, the AmiTCP configurerer and dialer that cames with AmiTCP, was shipped in a version requiring libraries not included in AmigaOS3.9 so it wouldn't run.  AmiTCP would, and AmiTCP was on the HD, though buried a bit.  Miami is shareware/crippleware.  It required the same library, MagicUI, that I didn't have.&lt;/p&gt;&lt;p&gt;I spent hours sorting out what required what and what I did and didn't have and how these various packages worked and fit together.  That's ignoring the device driver for the ethernet card which is straight forward.  The Amiga has a directory for libraries (which end in&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.library; the Unix terseness is missing from AmigaOS even though a lot of the feel is there).  AmigaOS3.9 also won't read iso9660 filesystem CDs.  Perhaps some BoingBag update fixes that but the BoingBag updates themselves are large&lt;nobr&gt; &lt;wbr&gt;&lt;/nobr&gt;.lha archives.  I'm avoiding plugging the serial line into a Unix machine and speaking kermit or zmodem or something to transfer stuff.  I've been down that road.  Eventually I burned AmigaSYS4, a version of AmigaOS3.9 with lots of add-ons and the various BoingBag updates on it, stick it in the Amiga, and was able to steal MUI off of it and get both TCP stacks running.&lt;/p&gt;&lt;p&gt;Amiga programmers love to do ports of Unix software and add GUIs.  They've been doing this for ages.  They've had gcc since the early ages of gcc, and I ran the Amylaar MUD driver on AmigaOS 1.3 to do development locally, also in the dark ages.  Kicking around on aminet.net from the Amiga, I see PHP, MySQL, Apache, bittorrent, Python, bind9, samba, VNC, and all sorts of stuff.  No one ports just the client.  If they port the client, they port the server, too.  In the case of AmiTCP, the suite of utilities you'd expect are there, such as host, finger, traceroute, and so on, but to configure TCP/IP, you run a little GUI program and it asks you questions.  It took Linux ages to get to this point and Amiga was doing it long before.  One of the extras on the Extras disc, even as far back as 1.3, was a version of emacs with drop down menus.&lt;/p&gt;&lt;p&gt;Completely unsurprisingly, the 16mhz 68030 processor running AWeb (which does some JavaScript) is vastly faster than firefox on my 1.2ghz Centrino Linux machine.  Amiga programmers do not write slow software.  It's entirely against their nature.  Threading is fantastic.  It'll do downloads, render several jpgs in the page, update the page layout as HTML comes across, and never lose snappy UI responsiveness.  On firefox, I yank on the scrollbar only to have it ignore me and snap back, or else the scroll bar doesn't move at all, or the whole thing just goes away for a few heart sinking seconds, making me wonder if it just crashed.&lt;/p&gt;&lt;p&gt;My ambition is to get a desk in a shared office space going and stick this baby there with an updated video card that does high res, high bit depth graphics.  If I'm willing to start replacing and upgrading chips on the motherboard, I can take the thing up to a gig of RAM, too, and NetBSD supports it if I ever decide I want to see how firefox runs on a 16mhz processor.  What I'm really hoping for is someone to take the latest Coldfire chips from Motorola's spin off, Freescale, and do an 800mhz accelerator card for the Amiga 2000/3000/4000.  That would RULE.&lt;/p&gt;&lt;p&gt;-scott&lt;/p&gt;</description>
<dc:creator>scrottie</dc:creator>
<dc:date>2010-08-25T20:09:48+00:00</dc:date>
<dc:subject>journal</dc:subject>
</item>

<item rdf:about="http://use.perl.org/~daxim/journal/40514?from=rss">
<title>Austrian Perl Workshop 2010 - Call for papers (2010.08.25  4:34)</title>
<link>http://use.perl.org/~daxim/journal/40514?from=rss</link>
<description>&lt;p&gt;English below

&lt;/p&gt;&lt;p&gt;&amp;#8213;&amp;#8213;&amp;#8213;&amp;#8213;

&lt;/p&gt;&lt;p&gt;Wir rufen zum Einreichen von Vortr&amp;#228;gen und Workshops f&amp;#252;r den &amp;#246;sterreichischen Perlworkshop 2010 auf, der am 5.&amp;#8211;6. November in Wien stattfinden wird. Wir m&amp;#246;chten gerne eure Themen &amp;#252;ber die Sprachfamilie Perl und damit verbundenes erfahren. Der Stichtag dazu ist der 8. Oktober.

&lt;/p&gt;&lt;p&gt;Um einen Vorschlag einzureichen und f&amp;#252;r weitere Details, siehe &lt;a href="http://2010.useperl.at/"&gt;unsere Website&lt;/a&gt;. Bitte &lt;a href="http://2010.useperl.at/apw2010/atom/de.xml"&gt;abonniert den Feed&lt;/a&gt; f&amp;#252;r zuk&amp;#252;nftige Benachrichtigung.

&lt;/p&gt;&lt;p&gt;Die Orgas

&lt;/p&gt;&lt;p&gt;&amp;#8213;&amp;#8213;&amp;#8213;&amp;#8213;

&lt;/p&gt;&lt;p&gt;We are announcing the call for papers for talks and workshops for the Austrian Perl Workshop 2010 which will be held on November 5th&amp;#8211;6th in Vienna. We would like to hear about your ideas concerning the Perl family of languages and related topics. The deadline for submissions is October 8th.

&lt;/p&gt;&lt;p&gt;To submit a talk abstract and for further details visit &lt;a href="http://2010.useperl.at/"&gt;our web site&lt;/a&gt;. Please &lt;a href="http://2010.useperl.at/apw2010/atom/de.xml"&gt;subscribe to the newsfeed&lt;/a&gt; to stay updated.

&lt;/p&gt;&lt;p&gt;The organisers&lt;/p&gt;</description>
<dc:creator>daxim</dc:creator>
<dc:date>2010-08-25T09:34:44+00:00</dc:date>
<dc:subject>events</dc:subject>
</item>

</rdf:RDF>