Thanks to all for your help. I've got some skip token weirdness. What the difference between the two skip definitions in lines 23 and 24?
20 my $pf99_grammar = q{ 21 { $DB::single = 1; 22 use Data::Dumper; 23 $skip = qr/,?/; 24 $Parse::RecDescent::skip = qr/,?/; 25 } .... further down in the grammar I have the following lines: 319 sock4110 : { print "skip: ".$Parse::RecDescent::skip." \n"; 320 print "skip: ".$skip." \n"; 321 } 322 timestamp meta result 1) test pattern matches successfully result 2) Pattern failure occurs because a literal comma is needed to complete the match between two tokens: timestamp and meta result 3) line 319 prints "skip: \s*" result 4) line 319 prints "skip: (?-xism:,?)" result 5) line 320 prints "skip: \s*" result 6) line 320 prints "skip: (?-xism:,?)" TEST 1) leave lines 20-25 as stated RESULT: 1, 4, 6 TEST 2) Delete line 23, leave line 24 RESULT: 2, 4, 5 TEST 3) Delete line 24, leave line 23 RESULT: 2, 3, 6 Tracking this problem down really screwed me up the last couple of days.