#!/usr/bin/perl sub get_line { while($line = ) { if($line =~ m/\S+ \S+ \S+ \S+ \S+ \S+ \S+ \S+ \S+ \S+ \S+/) { #print "returning line $line"; return $line; }else{ #print "not matched $line\n"; } } #exit; } sub get_line_read { while($line = ) { #d5748560 78669980 C Ci:004:00 0 1 = 50 #d3ea8260 44357030 C Ci:004:00 0 1 = bc if($line =~ m/\S+ \S+ C \S+ \S+ (\S+) = (\S+)/) { return $2; }else{ #print "not matched $line\n"; } } } while($line = get_line()) { #print $line; #dc451360 2119543170 S Co:002:00 s 40 23 001e 0080 0000 0 if($line =~ m/\S+ \S+ \S+ \S+ (\S+) 40 23 (\S+) 0080 0000 0/) { print "addr $2 "; $line = get_line(); #dc451360 2119546173 S Co:002:00 s 40 23 0000 0000 0000 0 if($line =~ m/\S+ \S+ \S+ \S+ (\S+) 40 23 (\S+) 0000 0000 0/) { print "reg $2 "; $line = get_line(); #dc451360 2119857171 S Co:002:00 s 40 23 001f 0080 0000 0 if($line =~ m/\S+ \S+ \S+ \S+ (\S+) 40 23 (\S+) 0040 0000 0/) { print "= $2 "; }elsif($line =~ m/\S+ \S+ \S+ \S+ (\S+) 40 23 (\S+) 0080 0000 0/) { print "wlen $2 "; $line = get_line(); if($line =~ m/\S+ \S+ \S+ \S+ (\S+) c0 23 (\S+) 0060 (\S+) \S+/) { print "read $3 "; print get_line_read(); } } } print "\n"; #print "$1 $2 $3 $4\n"; } }