#!/usr/bin/perl -w use strict; # reads a 2-color XPM; outputs space for white, asterisk for black my @lines = map { tr/",//d; $_ } grep {!m{^/\*|[{}]}} <>; my ($header, @c) = splice(@lines, 0, 3); my @dims = $header =~ m{(\d+)}g; die "has too many colors or is in wrong format\n" if $dims[2] > 2 || $dims[3] > 1; my $text = join('', @lines); # process colormap my ($w, $b); foreach (@c) { m{^\s*(\S).*#(\S+)\s*$}; hex($2) ? $w = $1 : $b = $1 } eval "\$text =~ tr/$w$b/ */"; print $text;