<?xml version="1.0" encoding="windows-1252"?>
<node id="788420" title="un-Nifty qr OR ASCII bullet parser" created="2009-08-13 15:04:39" updated="2009-08-13 15:04:39">
<type id="1980">
snippet</type>
<author id="45366">
belg4mit</author>
<data>
<field name="doctext">
</field>
<field name="snippetdesc">
While searching for a parse of ASCII bulleted lists the other day, I ended up rolling my own:
&lt;p&gt;
&lt;code&gt;while( $text =~ /\G\s*($bullet)\s*([^\n]+)((?:\s*$bullet{2,}\s*[^\n]+)+)?/g ){ ...} &lt;/code&gt;
&lt;/p&gt;
And stumbled across what I believed to be a clever use of [perldoc://qr] to create $bullet from a separate data structure (which permits us to later determine what style of bullet we had, and map it to something):</field>
<field name="snippetcode">
&lt;CODE&gt;
%bullets = ('*'=&gt;'foo', '+'=&gt;'bar', '@'=&gt;'qux');

#Original, which as ikegami points out, doesn't quite work
#my $bullet= sprintf(qr/[%s]/, join('', keys %bullets));
#Alternate form, that I was trying to make more scrutable, with added \Q
my $bullet=  qr/[\Q@{[join '', keys %bullets]}\E]/;
&lt;/CODE&gt;</field>
</data>
</node>
