#!/usr/bin/perl -wl use strict; use POSIX 'strtol'; sub is_hex { local $!; return ! (POSIX::strtol($_[0], 16))[1]; } my @hex = (0x1234, 1234, "0X1234", "beetroot", "decade", "fax"); print is_hex($_), "\t", $_ for @hex; __END__ Prints: 1 4660 1 1234 1 0X1234 beetroot 1 decade fax