#!/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,"::::::::"; y/-./ab/for@n=split//,pop; @s=grep$_,split/(..)/,unpack"b*",'!!!!!!!!!!!!!!!'; map{$l=$_;join" ",map($p[$l<<2&4|3&$s[$l+5*hex$_]],@n),$/} 0,1,1,2,3,3,4 } print d("123-45"); print d("67.890");