#!/usr/bin/perl -w use strict; use constant DLE=>0x10; my $dle = sprintf ("%02X", DLE); my $msg = pack ("CCCCC", 0x31, 0x32, 0x10, 0x10, 0x33); # match $dle's expanded, replacement is not expanded ? $msg =~ s/\x{$dle}\x{$dle}/\x{$dle}/g; printf ("%02x " x length($msg) . "\n", unpack ("C*", $msg));