## Finding the perfect tree topper

Santa is nothing if not fair, and insists that the games he gives out be fair too. To that end he employs Acme::Grep2D to evaluate board game configurations, and for quality control of pre-press editions of the word searches in puzzle books. It also comes in quite handy for parsing concrete poems.

```There are 25 stars.
3=> 1,  4=> 0 = STAR
49=> 1,  7=> 0 = STAR
19=> 1, 13=> 0 = STAR
57=> 1, 17=> 0 = STAR
12=> 1, 20=> 0 = STAR
13=>-1,  4=> 0 = STAR
59=>-1,  7=> 0 = STAR
29=>-1, 13=> 0 = STAR
67=>-1, 17=> 0 = STAR
22=>-1, 20=> 0 = STAR
11=>-1,  7=>-1 = STAR
27=>-1, 16=>-1 = STAR
65=>-1, 20=>-1 = STAR
57=>-1, 10=>-1 = STAR
20=>-1, 23=>-1 = STAR
5=> 1,  7=>-1 = STAR
14=> 1, 23=>-1 = STAR
21=> 1, 16=>-1 = STAR
51=> 1, 10=>-1 = STAR
59=> 1, 20=>-1 = STAR
8=> 0,  1=> 1 = STAR
17=> 0, 17=> 1 = STAR
24=> 0, 10=> 1 = STAR
54=> 0,  4=> 1 = STAR
62=> 0, 14=> 1 = STAR
```

## mod25.pl

```   1 use Acme::Grep2D;
2
3 #Count all the stars in the sky
4 \$g2d = Acme::Grep2D->new(text => do{ local \$/ = undef; <DATA> });
5
6 printf "There are %i stars.\n", scalar( @matches = \$g2d->Grep(qr/star/i) );
7
8 foreach( @matches ){
9     printf '%2\$2i=>%4\$2i, %3\$2i=>%5\$2i = %7\$s'."\n", @{\$_}, \$g2d->extract(\$_)
10 }
11
12 __DATA__
13 skyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskysky
14 skyskyskSskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskysky
15 skyskyskTskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskysky
17 skySTARkRsRATSyskyskyskyskyskyskyskyskyskyskyskyskyskySkyskyskyskyskyskyskysky
18 skyskysAyAkyskyskyskyskyskyskyskyskyskyskyskyskyskyskyTkyskyskyskyskyskyskysky
19 skyskyTkysTyskyskyskyskyskyskyskyskyskyskyskyskyskyskyAkyskyskyskyskyskyskysky
20 skyskSskyskSskyskyskyskyskyskyskyskyskyskyskyskysSTARyRkRATSskyskyskyskyskysky
21 skyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskAsAyskyskyskyskyskyskysky
22 skyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskysTyskTskyskyskyskyskyskysky
23 skyskyskyskyskyskyskyskySkyskyskyskyskyskyskyskyskySkyskySkyskyskyskyskyskysky
24 skyskyskyskyskyskyskyskyTkyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskysky
25 skyskyskyskyskyskyskyskyAkyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskyskysky
26 skyskyskyskyskyskysSTARyRkRATSskyskyskyskyskyskyskyskyskyskyskyskyskyskyskysky
27 skyskyskyskyskyskyskyskAsAyskyskyskyskyskyskyskyskyskyskyskyskSskyskyskyskysky
28 skyskyskyskyskyskyskysTyskTskyskyskyskyskyskyskyskyskyskyskyskTskyskyskyskysky