#!/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/(??{ eval qq!"\\x{$dle}\\x{$dle}"! })/qq!"\\x{$dle}"!/gee; printf ("%02x " x length($msg) . "\n", unpack ("C*", $msg)); __END__ 31 32 10 33