diff --git a/script/tei2korapxml b/script/tei2korapxml
index 70289f4..16137ae 100755
--- a/script/tei2korapxml
+++ b/script/tei2korapxml
@@ -146,11 +146,6 @@
 # '$text_id_esc' = escaped version of $text_id
 my ($text_id, $text_id_esc);
 
-# these are only used inside recursive function 'retr_info'
-# value is set dependent on DEBUG - for extracting array of
-# child elements from element in $tree_data
-my $child_idx;
-
 # element from $tree_data
 my $e;
 
@@ -182,10 +177,6 @@
 # ~~~ main ~~~
 #
 
-# Include line numbers in elements of $tree_data for debugging
-DEBUG ? ($child_idx = 5) : ($child_idx = 4);
-
-
 # ~ read input and write output (text by text) ~
 
 # Input file handle (default: stdin)
@@ -279,7 +270,7 @@
         %ws = ();
 
         # ~ recursion ~
-        retr_info(1, $tree_data->[2]); # parse input data
+        descend(1, $tree_data->[2]); # parse input data
 
         if (DEBUG) {
           $log->debug("Writing (utf8-formatted) xml file $dir/${data_file}.xml");
@@ -444,10 +435,10 @@
 
 
 # Recursively called function to handle XML tree data
-sub retr_info {
+sub descend {
 
   # recursion level
-  # (1 = topmost level inside retr_info() = should always be level of tag $_TEXT_BODY)
+  # (1 = topmost level inside descend() = should always be level of tag $_TEXT_BODY)
   my $depth = shift;
 
   # Iteration through all array elements
@@ -463,12 +454,14 @@
       # from here: tag-node (opening)
       #~~~~
 
+      # Get the child index depending on the debug state.
+      # This is likely to be optimized away by the compiler.
+      my $children = $e->[DEBUG ? 5 : 4];
+
       # $e->[1] represents the tag name
       # Skip sentences
       if ($use_tokenizer_sentence_splits && $e->[1] eq "s") {
-        if (defined $e->[$child_idx]) {
-          retr_info($depth+1, $e->[$child_idx]);
-        }
+        descend($depth+1, $children) if defined $children;
         next;
       }
 
@@ -504,13 +497,9 @@
 
 
       # Call function recursively
-      # do no recursion, if $e->[$child_idx] is not defined
+      # do no recursion, if $children is not defined
       # (because we have no array of child-nodes, e.g.: <back/>)
-      if (defined $e->[$child_idx]) {
-
-        # Recursion with array of child-nodes
-        retr_info($depth+1, $e->[$child_idx]);
-      }
+      descend($depth+1, $children) if defined $children;
 
 
       #~~~~~
@@ -813,7 +802,7 @@
 
 [ 0: XML_READER_TYPE_DOCUMENT,
   1: ?
-  2: [ 0: [ 0: XML_READER_TYPE_ELEMENT                     <- start recursion with array '$data->[2]' (see retr_info( \$tree_data->[2] ))
+  2: [ 0: [ 0: XML_READER_TYPE_ELEMENT                     <- start recursion with array '$data->[2]' (see descend( \$tree_data->[2] ))
             1: 'node'
             2: ?
             3: HASH (attributes)
@@ -863,7 +852,7 @@
 ref($data->[2]->[0]->[3])                                               == HASH  (=> ${$data->[2]->[0]->[3]}{a} == 'v')
 $data->[2]->[0]->[4]                                                    == 1 (line number)
 ref($data->[2]->[0]->[5])                                               == ARRAY (with 2 elements for 'node1' and 'node2')
-                                                                                   # child-nodes of actual node (see $child_idx)
+                                                                                   # child-nodes of actual node (see $children)
 
 ref($data->[2]->[0]->[5]->[0])                                          == ARRAY (with 6 elements)
 $data->[2]->[0]->[5]->[0]->[0]                                          == 1 (=> type == XML_READER_TYPE_ELEMENT)
@@ -888,7 +877,7 @@
 $data->[2]->[0]->[5]->[0]->[5]->[2]->[1]                                == ' text'
 
 
-retr_info() starts with the array reference ${$_[0]} (= \$tree_data->[2]), which corresponds to ${\$data->[2]} in the above example.
+descend() starts with the array reference ${$_[0]} (= \$tree_data->[2]), which corresponds to ${\$data->[2]} in the above example.
 Hence, the expression @{${$_[0]}} corresponds to @{${\$data->[2]}}, $e to ${${\$data->[2]}}[0] (= $data->[2]->[0]) and $e->[0] to
 ${${\$data->[2]}}[0]->[0] (= $data->[2]->[0]->[0]).
 
@@ -896,7 +885,7 @@
 ## Notes on whitespace handling
 
 Every whitespace inside the processed text is 'significant' and recognized as a node of type 'XML_READER_TYPE_SIGNIFICANT_WHITESPACE'
-(see function 'retr_info()').
+(see function 'descend()').
 
 Definition of significant and insignificant whitespace
 (source: https://www.oracle.com/technical-resources/articles/wang-whitespace.html):
