# main, use below to substitute cell_walk and callback routine for ( my $row = 1 ; $row <= $LastRow ; $row++ ) { for ( my $col = 1 ; $col <= $LastCol ; $col++ ) { next if !defined $Sheet->Cells( $row, $col )->{Value}; if ( $Sheet->Cells( $row, $col )->{Value} =~ /^~~~/ ) { my @a = split( /__/, substr( $Sheet->Cells( $row, $col )->{Value}, 3 ) ); #grab useful string if( scalar @a == 3){ $Sheet->Cells( $row, $col )->{Value} = $hl->get_single_LP( 'ADAS_VAL_RAW', @a ); } if( scalar @a == 4){ $Sheet->Cells( $row, $col )->{Value} = $hl->accu_LP( 'ADAS_VAL_NORM', @a ); } } } }