SPUG: Switch's "case" matching doesn't set $1 !

Michael R. Wolf MichaelRWolf at att.net
Wed Feb 14 05:13:01 PST 2007

When I found this out, I freaked, too!  I guess I shouldn't have been so
surprised.  While at the Chicago hackathon in October, I was having a side
conversation with someone trying to decide whether to 'use Switch' or not,
so I interrupted the room to take a 10 second instant-poll.  The consensus
was "no"!  I was surprised by the answer, but listened to the collected
wisdom.   But then I forgot, and bumped into the bug a few months later.

(BTW: this "instant polling" was an interesting benefit of being in a room
with lots of experienced folks at the hackathon.  There's nothing like
instant feedback.  XP - extreme programming -> extreme feedback velocity.
And it happened *ALL OVER* the place at the hackathon.  During the Saturday
evening "status report", quite a few folks commented on how fast
conversations could take place face-to-face, and across-the-room when so
many of the concerned folks shared space.)

Here's the bug I submitted a few weeks ago.  There's been no action on it
since I submitted it.  I guess the anticipated fix-date is Perl6.


Here's the code frag I submitted with the bug.  Feel free to add yours.

#! /usr/bin/perl

use warnings;
use Switch;

$data = 'catch 22';

switch ($data) {
    case qr/catch (\d+)/ {
	print "I know my gross situation: $data\n";
	print "My parsed situation is unknown: $1\n";
	warn 'Matched, but not captured' unless defined $1;
    else {
	warn "$data is unrecognized\n";

Michael R. Wolf
    All mammals learn by playing!
        MichaelRWolf at att.net

More information about the spug-list mailing list