#!/usr/local/bin/perl

while (@ARGV) {
  $_ = $ARGV[0];
  if (/^([0-9]+|0[xX][0-9a-fA-F]+|0[oO][0-7]+)$/) {
    $chars{do num($1)} = 1;
  }
  if (/^([0-9]+|0[xX][0-9a-fA-F]+|0[oO][0-7]+)-([0-9]+|0[xX][0-9a-fA-F]+|0[oO][0-7]+)$/) {
      for ($i = do num($1), $j = do num($2); $i <= $j; $i++) {
          $chars{$i} = 1;
      }
  }
  shift;
}

for ($i = 0; $i < 256; $i += 8) {
    $n = 0;
    for ($j = 0; $j <= 7; $j++) {
        $n += $chars{$i+$j} << $j;
    }
    printf ("\\%03o", $n);
}

print "\n";

sub num {
    local ($_);
    $_ = $_[0];
    return $_ if /^[0-9]+$/;
    return oct($1) if /^0[oO]([0-7]+)$/;
    return hex($1) if /^0[xX]([0-9a-fA-F]+)$/;
    die("num");
}

