#!/usr/bin/perl open SEG, ">segment.pl" or die "Can't write seg.pl: $!\n"; binmode SEG; while(){ s/::::::::/pack"H*",'1f10001100100111'/e; s/!!!!!!!!!!!!!!!/pack"H*",'fca88a04228f12420caacc30125084'/e; print SEG $_; } __END__ #!/usr/bin/perl sub d{ y/01/ #/for@p=unpack"b5"x8,"::::::::";@s=grep$_,split/(..)/, unpack"b*",'!!!!!!!!!!!!!!!';map{$l=$_;join($",map{y/-./ab/; $p[4&$l*4|3&$s[$l+5*hex]]}split//,$_[0]).$/}0,1,1,2,3,3,4 } print d("123-45"); print d("67.890");