sub parseStart { my $expat = shift; my $tag = shift; my %attr = @_; SWITCH: for ($tag) { /^DC.(.*)$/ && do { saveDC($1); last SWITCH; }; /div(\d+)/ && do { start_section($1, $attr{title}); last SWITCH; }; /^(p|h\d+)$/ && do { passthrough_start($1); last SWITCH; }; /^(verse)$/ && do { passthrough_start('p'); last SWITCH; }; /^(span)$/ && do { passthrough_start('b'); last SWITCH; }; /^(l)$/ && do { $sectionData{$currentDepth} .= '  '; last SWITCH; }; /^(scripRef)$/ && do { $sectionData{$currentDepth} .= ""; last SWITCH; }; /^(note|added)$/ && do { ignore(); last SWITCH; }; } } sub parseEnd { my ($expat, $tag) = @_; SWITCH: for ($tag) { /^DC.(.*)$/ && do { end_saveDC($1); last SWITCH; }; /div(\d+)/ && do { end_section($1); last SWITCH; }; /^(p|h\d+|scripRef)$/ && do { passthrough_end($1); last SWITCH; }; /^(verse)$/ && do { passthrough_end('p'); last SWITCH; }; /^(span)$/ && do { passthrough_end('b'); last SWITCH; }; /^(br|l)$/ && do { $sectionData{$currentDepth} .= "
"; last SWITCH; }; /^(note|added)$/ && do { unignore(); last SWITCH; }; } }