my $grammar = q{ file: hdr body ftr hdr: /^HDR.*\\n/ { print "HDR: $item[1]"; } body: batch(s) ftr: /^FTR.*\\n/ batch: bathdr tran(s) batftr bathdr: /^BHD.*\\n/ { # $str1= substr($item[1],30,3) 1; } tran: TR1 TR2 batftr: /^BFT.*\\n/ TR1: /^TR1.*\\n/ { # $str4= substr($item[1],35,8); # $str2= substr($item[1],122,5); 1; } TR2: /^TR2.*\\n/ { # $str3= substr($item[1],103,2); # print "DATA: $str1, $str2, $str3, $str4\\n"; 1; } };